Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Хочу на форме создать Edit. Не получается :( [D7, XP]


Страницы:   1 2

Первокласник Вася ©   (2006-04-11 17:23:00) 

Здравствуйте! Подскажите пожалуйста, как на форме можно создать определённое количество обэектов класса ТEdit?

Создать и разместить на форме могу, но не получается, например 5 штук таких сделать?


Первокласник Вася   (2006-04-11 19:42:00) [21]

Прошу прощения....
Вы сказали Таким образом всегда есть возможность обратиться к любому созданному едиту.
т.е. через массив?


Rater1   (2006-04-11 19:38:00) [22]

Возможно я чего-то не понимаю, но я делал через массив:

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;

type
 TForm1 = class(TForm)
   Button1: TButton;
   procedure Button1Click(Sender: TObject);
   procedure allbuttonClick(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 eee:array of TEdit;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
 i:integer;
begin
 SetLength(eee,5); //5 îáúåêòîâ
 for i:=0 to 5-1 do
 begin
    eee[i] := TEdit.Create(self);
    eee[i].Parent := Form1;
    eee[i].Left := 20;
    eee[i].Top := i*20;
    eee[i].Width := 60;
    eee[i].Height := 15;
    eee[i].Name := 'edit'+inttostr(i+1);
    eee[i].OnClick := allbuttonClick;
 end;
end;

procedure TForm1.allbuttonClick(Sender: TObject);
begin
 showmessage(TEdit(sender).Name);
 //анализ кто вызвал событие можно здесь
end;

end.


естественно его прибить можно при выходе.
Таким образом всегда есть возможность обратиться к любому созданному едиту.


Первокласник Вася   (2006-04-11 19:38:00) [23]

Мастера! Помогите пожалуйста, а то скоро мозги вылезут!  До сих пор копаюсь.... не получается.....


Первокласник Вася   (2006-04-11 19:14:00) [24]

Мастера! Извиняюсь за повтор темы, хочу уточнить ещё одну маленькую деталь: как обработать нажатие?
т.е. предположим, на форме 3 edit'a. На каждом имеется определённая запись. Предположим, я хочу подтвердить запись 2-го edita и в label1 вывести ету запись. Подскажите пожалуйста, как это можно реализовать?
Сколько роюсь - ничего не получается :(


Первокласник Вася   (2006-04-11 18:30:00) [25]

Огоромное спасибо!
Оба примера мне помогли шагнуть внужную сторону!
Ещё разоу спасибо !!!!!


Zeqfreed   (2006-04-11 18:03:00) [26]

procedure PlaceEditControls(Where : TForm; HowMany : Cardinal; Location : TPoint);
begin
 if (HowMany = 0) then Exit;

 with TEdit.Create(Where) do begin
  Parent := Where;
  Top := Location.Y;
  Left := Location.X;
 end;

 PlaceEditControls(Where, HowMany - 1, Point(Location.X, Location.Y + 25));
end;


Использовать так:

procedure TForm1.Button1Click(Sender: TObject);
begin
PlaceEditControls(Form1, 5, Point(8, 8));
end;


Quattro   (2006-04-11 17:50:00) [27]

в смысле вот так..

var
 Form1: TForm1;
 E:TEdit;

implementation

{$R *.dfm}

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
E:=TEdit.Create(Self);
E.Parent:=Form1;
E.Left:=X;
E.Top:=Y;
E.Width:=40;
E.Height:=20;
E.Show;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
E.Free;
end;


Quattro   (2006-04-11 17:49:00) [28]

может быть так?

procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
 Shift: TShiftState; X, Y: Integer);
begin
E:=TEdit.Create(Self);
E.Parent:=Form1;
E.Left:=X;
E.Top:=Y;
E.Width:=40;
E.Height:=20;
E.Show;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
E.Free;
end;


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо