Технический форум

Технический форум (http://www.tehnari.ru/)
-   Delphi, Kylix and Pascal (http://www.tehnari.ru/f43/)
-   -   Друзья, нужна ваша помощь (http://www.tehnari.ru/f43/t61121/)

g1one 11.12.2011 23:21

Друзья, нужна ваша помощь
 
1. На форме располагаются: редактор Memo; две панели для вывода размера редактора и две панели выше с соответствующими надписями «Ширина» и «Высота»; четыре кнопки , , , ; список ListBox с опциями "Левый верхний" и "Правый нижний" и кнопка Close. Нажатие кнопок со стрелками приводит к соответствующему изменению размера редактора вследствие перемещения указанного в ListBox угла, что отображается на панелях. Размер редактора находится в диапазоне от 100х100 до 250х250. При достижении граничного значения соответствующая кнопка исчезает. Кнопка Close заканчивает программу.

g1one 11.12.2011 23:35

Данную задачу нужно сделать на Delphi

AlexZir 12.12.2011 05:06

На событие OnClick соответствующей кнопки повесьте команду изменения линейного размера компоненты (соответственно Width и Hight) и анализируйте его значение (If ...). При достижении предельного значения соответствующую кнопку спрячьте (свойство Visible:=False).

g1one 17.12.2011 00:23

А можно по подробнее, Пожалуйста)

MrSTEP 17.12.2011 19:22

Двойной щелчок по любой кнопке на форме (в режиме конструирования) открывает процедуру обработки щелчка по этой кнопке (Событие OnClick, о чем писал AlexZir). В нее-то и нужно записать действие, которое бы меняло высоту и ширину формы, или ее положение на экране.

Вы говорите, я делал похожую задачу? Дайте-ка ссылку, посмотреть. Кажется, там все неплохо расписано..

g1one 17.12.2011 19:25

http://www.tehnari.ru/f41/t35994/#post333772

MrSTEP 17.12.2011 19:52

В общем-то, все похоже, надо лишь немного изменить процедуры перемещения.
Поясню по событиям: среди окон делфи в левом нижнем углу есть окно Инспектора объектов (Object Inspector), на одной вкладке которого отображаются Свойства выделенного объекта, на второй - события для данного объекта (Properties и Events соответственно). Так, событие Щелчок мыши обрабатывается через OnClick, нажатие клавиши - OnKeyPress, изменение - OnChange, и т.д.. В соответствующие события вам нужно вписать код, который бы обрабатывал это и производил какие-то действия.
Так вот, для обработки изменения ЛистБокса добавляем в глобальный var переменную flag логического типа, а в саму процедуру вставляем это:
Код:

сase ListBox1.ItemIndex of
 0: flag:=false;
 1: flag:=true;
 end;


MrSTEP 17.12.2011 20:05

Далее, коды для кнопок направлений из той темы справедливы и для вас, только лишь объект Form1 замените на Memo1.

g1one 17.12.2011 20:55

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

MrSTEP 17.12.2011 21:09

Цитата:

Сообщение от MrSTEP (Сообщение 636770)
добавляем в глобальный var переменную flag логического типа

Вы это пропустили. Подскажу, в глобальном var'e у вас уже описана Form3 (откуда там три?).

И еще: не везде заменено Form1 на мемо, внимательнее надо искать. Или пользоваться процедурой замены-подстановки.


Часовой пояс GMT +4, время: 17:57.

Powered by vBulletin® Version 4.5.3
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.