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

Вниз

Создание компонентов в RunTime и дальнейшая работа с ними??   Найти похожие ветки 

 
Duke DEE ©   (2003-03-26 19:26) [0]

Я создал, неопределённое количество Label к примеру 10, В RunTime, Как мне с каждым из них работать??? К примеру удалить 3ий, или поменять цвет у пятого, или вообще все созданные удалить???, получается работать только с последним!!! И ещё, как мне в созданный в RunTime копмонент, сделать обработку процедур?? К примеру при наведении на Label он подчёркивается!!
Вот как я делал, а чё делать дальше???
var
Form1: TForm1;
A: TLabel;
top: integer = 20;
procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
const
color: array [0..4] of string = "clblue","clRed","clGreen","clYellow","clLime");
begin
for i:=1 to 20 do
begin
A:=Tlabel.Create(Self);
A.Parent:=Form1;
A.Name:="Label"+inttostr(i);
A.Font.Color:= stringtocolor(color[random(5)]);
A.Top:=top+24;
A.Left:=30;
A.Caption:="Label N"+inttostr(i)+"!!!";
inc(top,20);
end;
end;

А если я хочу A.onmousemove То чё мне делать, куда и как прописывать???


 
Palladin ©   (2003-03-26 19:57) [1]

голова тебе на что?
думай... читай... написано много об этом...


 
pasha_golub ©   (2003-03-26 19:58) [2]

Можно работать через property TForm.Components[i] и проверять

for i:=0 to Self.ComponentCount - 1 do
if (Self.Components[i] is TLabel) then
if (Self.Components[i] as TLabel).Name = "Label1" then
(Self.Components[i] as TLabel).onMouseMove := твой обработчик;


 
theodor_iv ©   (2003-03-26 20:08) [3]

> Paladin

Программист и голова -- вещи несовместные. :) см. пример, приведенный pasha_golub © (26.03.03 19:58)

> Duke DEE © (26.03.03 19:26)

Во первых, напиши вместо const...


const
color: array [0..4] of TColor = (clblue, clRed, clGreen, clYellow , clLime);


и убери ф-цию StringToColor

А если

> я хочу A.onmousemove


то напиши А.OnMouseMove := НазваниеТвоегоОбработчка;
Твой обработчик можно создать ручками (но это уж совсем для трудоголиков), либо у любого TLabel"a...


 
Duke DEE ©   (2003-03-26 21:13) [4]

Ну с первой частью я разобрался

procedure TForm1.Button2Click(Sender: TObject);
var
i:integer;
k:integer;
begin
for k:=n downto strtoint(edit2.text) do
begin
for i:=0 to form1.ComponentCount - 1 do
begin
if (Self.Components[i] is TLabel) then
if (Self.Components[i] as TLabel).Name = "Nick"+inttostr(k) then
(Self.Components[i] as TLabel).caption:="Changed N"+inttostr(k);
end;
end;
end;


А вот с обработчиком не понял!!!
Как свой создать?? дайте какой нить пример пожалста!!!


 
Duke DEE ©   (2003-03-26 21:18) [5]


> Palladin

Чем умнее человек, тем хуже он даёт советы =)


 
MBo ©   (2003-03-27 05:50) [6]

Чтобы не прочесывать все компоненты на форме, создай массив
array[1..20] of TLabel или список TList или TObjectList и при создании метки добавляй ее туда.

delphi.vitpc.com
hello world
Жизнь и смерть в run-time


 
Duke DEE ©   (2003-03-28 14:58) [7]

Дайте какой нибудь пример на обработчик событий, не могу понять!
a.onmouseclick:= ????


 
MBo ©   (2003-03-28 15:02) [8]

Статью по ссылке явно не прочитал. А зря...


 
Duke DEE ©   (2003-03-28 16:27) [9]

МВо, извени, не заметил Ссылку! Щаз посмотрю!


 
ewgeny   (2003-03-28 16:28) [10]

используй свойство Tag и по нему ориентируйся


 
ЮРИЙ_К ©   (2003-03-31 09:45) [11]

Да все гараздо проще 8-). При создании лабелов, туда-же создаешь и обработчик

...
private
procedure onMyKeyPress(Sender: TObject; var Key: Char);
...

implementation
...
procedure TSpisokFrm.onMyKeyPress(Sender: TObject; var Key: Char);
begin
Пишешь чего надо
end;

// Собственно создание самих лабелов

with TLabel.Create(Self) do
begin
Parent := Form1;
Alignment := taLeftJustify;
Width := 400;
Left := 110;
Top := (k * 25) + 32; // если в цикле
Name := "Label" + IntToStr(k + 1);
Caption := "Label" + IntToStr(k + 1);
OnMouseMove := onMyMouseMove;
end;
//



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

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

Наверх




Память: 0.49 MB
Время: 0.011 c
1-30418
dmk
2003-03-27 00:41
2003.04.10
Перехват перерисовки окна?


14-30591
nayk
2003-02-18 02:53
2003.04.10
Подскажите где найти инфу по SMS


3-30274
Andrei
2003-03-21 17:30
2003.04.10
Фильтрация


3-30222
minva74
2003-03-20 17:26
2003.04.10
TimeOut


3-30309
tERRORist
2003-03-22 10:54
2003.04.10
Почему только 10 полей в dbExpress?