Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2006.04.30;
Скачать: CL | DM;

Вниз

Хочу на форме создать Edit. Не получается :(   Найти похожие ветки 

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

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

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


 
Quattro ©   (2006-04-11 17:49) [1]

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

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:50) [2]

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

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;



 
Zeqfreed ©   (2006-04-11 18:03) [3]

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;


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

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


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

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


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

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


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

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

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:42) [8]

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


 
Zeqfreed ©   (2006-04-11 19:45) [9]

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

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

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

Пример использования:

procedure TForm1.EditHandler(Sender: TObject; var Key: Char);
begin
 ShowMessage(Format("Key "%s" pressed in edit control #%d", [Key, (Sender as TControl).Tag]));
end;


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


 
Первокласник Вася   (2006-04-11 20:02) [10]

Zeqfreed!!!!

У меня та ки не получилось :((((
Этот пример я не понял. Точнее он не работает!
Покажу все как у меня есть.

unit Unit1;

interface

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

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

var
 Form1: TForm1;

implementation

{$R *.dfm}

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

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

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

procedure TForm1.EditHandler(Sender: TObject; var Key: Char);
begin
ShowMessage(Format("Key "%s" pressed in edit control #%d", [Key, (Sender as TControl).Tag]));
end;

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

end.


 
Первокласник Вася   (2006-04-11 20:26) [11]

Мастера! Прошу откликнуться, что я не правильно делаю?


 
Anatoly Podgoretsky ©   (2006-04-11 20:28) [12]

Ты решил Дельфи изучить через форумы?


 
Первокласник Вася   (2006-04-11 20:32) [13]

Ты решил Дельфи изучить через форумы?

Легко сказать? А как вы сами раньше начинали? Не подобна ли ситуация?
А почему название такое "Начинающим"?


 
Гаврила ©   (2006-04-11 20:36) [14]


> Quattro ©


>  [2]


>var
> Form1: TForm1;
>  E:TEdit;


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


Вот это лажа полная. Хотя и все сработает.


 
Первокласник Вася   (2006-04-11 20:45) [15]

А как правильно то? Каждый работает по принципу "правильнее правильного".
А я начинающий - всего 3 месяца и хочу учиться и буду учиться, а что не ясно, то спрошу, дял чегоже в русский язык введено такое понятие "переспросить"? Или мы все с луны свалились?


 
Zeqfreed ©   (2006-04-11 20:48) [16]

[10] Первокласник Вася   (11.04.06 20:02)
Можно было бы уж посмотреть, что TKeyPressEvent объявлен так: TKeyPressEvent = procedure(Sender: TObject; var Key: Char) of object;
И, соответственно, объявить EditHandler нужно было аналогично.


 
Первокласник Вася   (2006-04-11 20:56) [17]

Ни чего не понял :(

Покажи пожалуйста, как правильно запсиать!
Чета не получается....


 
Zeqfreed ©   (2006-04-11 21:01) [18]

Было:

private
  { Private declarations }
public
  { Public declarations }
  procedure EditHandler;


Стало:

private
  procedure EditHandler(Sender: TObject; var Key: Char);
  { Private declarations }
public
  { Public declarations }
 



> хочу учиться и буду учиться

Малозаметно, если честно.


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

Всё понятно! Спасибо!
Малозаметно, если честно

Скаже честно - это моя проблема, с которой бьюс и день и ночь!
Но стараюсь!!!!!

Спасибо!!!!!!


 
Leonid Troyanovsky ©   (2006-04-11 22:05) [20]


> Первокласник Вася   (11.04.06 20:32) [13]

> А почему название такое "Начинающим"?


Потомучто трудно им.

--
Regards, LVT.


 
Германн ©   (2006-04-12 02:30) [21]


> Первокласник Вася   (11.04.06 20:32) [13]
>
> Ты решил Дельфи изучить через форумы?
>
> Легко сказать? А как вы сами раньше начинали? Не подобна
> ли ситуация?


Даже если принять за истину, что АП раньше всех здесь присутствующих получил доступ к некоей компьютерной сети, хоть сколько-нибудь глобальной, а (имхо) это так и есть, то всё равно начинал он гораздо раньше возникновения подобной сети и возможности общения по ней.
Кстати и книг тогда почти что не было. Был только хэлп! И то не всегда. Но уж точно всегда на не родном языке.


 
Quattro ©   (2006-04-12 03:54) [22]

Гаврила ©   (11.04.06 20:36) [14]

> Quattro ©

>  [2]

>var
> Form1: TForm1;
>  E:TEdit;

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

Вот это лажа полная. Хотя и все сработает.

Почему же лажа?


 
Rater1   (2006-04-12 07:04) [23]

хм... немного не по теме, но всё же:
а если не секрет, если что-то надо сделать с созданным edit-ом, как к нему обращаться? Ни имени ни ссылки....


 
RDen   (2006-04-12 07:43) [24]

> Rater1
> Ни имени...
а куда имя то девалось?


 
Virgo_Style ©   (2006-04-12 07:48) [25]

...И зачем ссылку не сохранил? )

Хотя можно и не сохранять, а найти через св-ва формы.


 
Rater1   (2006-04-12 08:07) [26]


> RDen   (12.04.06 07:43) [24]


ну имя возможно и никуда не девалось, а вот какое оно создалось никто не запомнил (в данном коде конечно). можно конечно перебрать все edit-ы на форме и по tag-у найти нужный, но лучше имя добавить или массив как я предлагал выше создать. (> Rater1   (11.04.06 19:38) [7] )

Или есть другие методы?


 
Игорь Шевченко ©   (2006-04-12 11:33) [27]


> Кстати и книг тогда почти что не было. Был только хэлп!
> И то не всегда. Но уж точно всегда на не родном языке.


И за хелпом приходилось идти пять километров в гору. Зимой и против ветра.


 
Юрий Зотов ©   (2006-04-12 11:54) [28]

> Первокласник Вася

Вот эта статья должна снять все вопросы:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342

PS
Если всерьез решили освоить программирование, то без книг не обойтись. Никакие форумы их не заменят.



Страницы: 1 вся ветка

Текущий архив: 2006.04.30;
Скачать: CL | DM;

Наверх




Память: 0.54 MB
Время: 0.037 c
3-1141489847
Александр К...
2006-03-04 19:30
2006.04.30
Распространение приложений, использующих BDE


15-1144161185
Немой
2006-04-04 18:33
2006.04.30
Вот вам и высшее образование


2-1144824286
Близнец
2006-04-12 10:44
2006.04.30
Организация дозвона с использованием имеющегося подключения


2-1144834953
UKRSHEV
2006-04-12 13:42
2006.04.30
Доступ к URL, требующим авторизации.


15-1144571134
Ega23
2006-04-09 12:25
2006.04.30
С Днём рождения! 9 апреля