Друзья, нужна ваша помощь
1. На форме располагаются: редактор Memo; две панели для вывода размера редактора и две панели выше с соответствующими надписями «Ширина» и «Высота»; четыре кнопки , , , ; список ListBox с опциями "Левый верхний" и "Правый нижний" и кнопка Close. Нажатие кнопок со стрелками приводит к соответствующему изменению размера редактора вследствие перемещения указанного в ListBox угла, что отображается на панелях. Размер редактора находится в диапазоне от 100х100 до 250х250. При достижении граничного значения соответствующая кнопка исчезает. Кнопка Close заканчивает программу.
|
Данную задачу нужно сделать на Delphi
|
На событие OnClick соответствующей кнопки повесьте команду изменения линейного размера компоненты (соответственно Width и Hight) и анализируйте его значение (If ...). При достижении предельного значения соответствующую кнопку спрячьте (свойство Visible:=False).
|
А можно по подробнее, Пожалуйста)
|
Двойной щелчок по любой кнопке на форме (в режиме конструирования) открывает процедуру обработки щелчка по этой кнопке (Событие OnClick, о чем писал AlexZir). В нее-то и нужно записать действие, которое бы меняло высоту и ширину формы, или ее положение на экране.
Вы говорите, я делал похожую задачу? Дайте-ка ссылку, посмотреть. Кажется, там все неплохо расписано.. |
|
В общем-то, все похоже, надо лишь немного изменить процедуры перемещения.
Поясню по событиям: среди окон делфи в левом нижнем углу есть окно Инспектора объектов (Object Inspector), на одной вкладке которого отображаются Свойства выделенного объекта, на второй - события для данного объекта (Properties и Events соответственно). Так, событие Щелчок мыши обрабатывается через OnClick, нажатие клавиши - OnKeyPress, изменение - OnChange, и т.д.. В соответствующие события вам нужно вписать код, который бы обрабатывал это и производил какие-то действия. Так вот, для обработки изменения ЛистБокса добавляем в глобальный var переменную flag логического типа, а в саму процедуру вставляем это: Код:
сase ListBox1.ItemIndex of |
Далее, коды для кнопок направлений из той темы справедливы и для вас, только лишь объект Form1 замените на Memo1.
|
unit Unit3;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls; type TForm3 = class(TForm) Memo1: TMemo; Memo2: TMemo; Memo3: TMemo; Memo4: TMemo; ListBox1: TListBox; CheckBox1: TCheckBox; Button1: TButton; Button2: TButton; Button3: TButton; Button4: TButton; procedure Button1Click(Sender: TObject); procedure Button4Click(Sender: TObject); procedure Button3Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure ListBox1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form3: TForm3; implementation {$R *.dfm} procedure TForm3.Button1Click(Sender: TObject); begin Case flag of false: Memo1.Left:=Form1.Left-5; true: Memo1.Width:=Form1.Width-5; end; end; procedure TForm3.Button2Click(Sender: TObject); begin Case flag of false: Memo1.Top:=Form1.Top+5; true: Memo1.Height:=Form1.Height+5; end; end; procedure TForm3.Button3Click(Sender: TObject); begin Case flag of false: Memo1.Left:=Form1.Left+5; true: Memo1.Width:=Form1.Width+5; end; end; procedure TForm3.Button4Click(Sender: TObject); begin Case flag of false: Memo1.Top:=Form1.Top-5; true: Memo1.Height:=Form1.Height-5; end; end; procedure TForm3.CheckBox1Click(Sender: TObject); begin Application.Terminate; end; procedure TForm3.ListBox1Click(Sender: TObject); begin var flag of сase ListBox1.ItemIndex of 0: flag:=false; 1: flag:=true; end; end; end. Вот что я смог сделать) Ошибку выдает case flag of |
Цитата:
И еще: не везде заменено Form1 на мемо, внимательнее надо искать. Или пользоваться процедурой замены-подстановки. |
Часовой пояс GMT +4, время: 17:57. |
Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.