Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2006.04.30;
Скачать: [xml.tar.bz2];

Вниз

Хочу на форме создать 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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.52 MB
Время: 0.013 c
3-1141885514
Елена
2006-03-09 09:25
2006.04.30
Иерархические запросы


6-1137144088
Maestro
2006-01-13 12:21
2006.04.30
LAN и FTP, Зависание Socket


2-1144752425
jack128
2006-04-11 14:47
2006.04.30
Помогите с SQL запросом


4-1139568531
Vlad2
2006-02-10 13:48
2006.04.30
Как определить, нажата ли левая клавиша мыши


1-1143312945
Muhan_
2006-03-25 21:55
2006.04.30
Как программно поменять раскладки клавы с англ. на русскую ...





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский