Форум: "Основная";
Текущий архив: 2003.04.10;
Скачать: [xml.tar.bz2];
ВнизСоздание компонентов в 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;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.006 c