Форум: "Начинающим";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];
ВнизСоздание Label-ов с помощью TLabel.create Найти похожие ветки
← →
Werewolf-Prankster (2008-05-10 17:47) [0]Здраствуйте. Есть проблемма. Надо с поможью цикла создать таблицу Label-ов. Как я это делал:
procedure TForm1.PoleWrite;
begin
for x:=1 to 9 do
for y:=1 to 9 do
begin
FLabel:=TLabel.create(self);
FLabel.top:=15*x;
FLabel.left:=15*y;
FLabel.height:=15*x;
FLabel.width:=15*y;
FLabel.Caption:=pole[x,y];
end;
end;
Но чего-то не работает (
← →
Amoeba © (2008-05-10 17:50) [1]Читать эту статью до полного просветления:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342
← →
Юрий Зотов © (2008-05-10 17:52) [2]Не хватает FLabel.Parent := Self
← →
Werewolf-Prankster (2008-05-10 18:43) [3]Спасибо :)
← →
Юрий Зотов © (2008-05-10 21:13) [4]> Werewolf-Prankster
Вместо 4-х косвенных вызовов SetBounds не лучше ли сделать один прямой?
← →
Германн © (2008-05-11 00:24) [5]
> Werewolf-Prankster (10.05.08 17:47)
И ещё одно замечание. Переменная FLabel тут нафиг не нужна. И даже вредна, поскольку после создания всех "полей" будет вызывать ненужные соблазны.
← →
{RASkov} © (2008-05-11 00:34) [6]> И ещё одно замечание. Переменная FLabel тут нафиг не нужна.
> И даже вредна, поскольку после создания всех "полей" будет
> вызывать ненужные соблазны.
Либо сделать ее локальной в коде метода [0], но....
Она и в самом деле скорее не нужна, чем нужна, тем более что хранится в ней будет только последняя метка....
Или как вариант двумерный массив меток.... или список.... но никак не так как есть в [0])
← →
Германн © (2008-05-11 00:41) [7]
> Или как вариант двумерный массив меток.... или список...
Или не так и не так. Достаточно "включить" Tag.
← →
{RASkov} © (2008-05-11 00:54) [8]Итого:
"Без сохранения" ссылок: (ссылки все равно будут в двух списках)procedure TForm1.PoleWrite;
var X, Y: Integer;
begin
for x:=1 to 9 do
for y:=1 to 9 do
with TLabel.create(self) do begin
SetBounds(15*y, 15*x, 15*y, 15*x);
Parent:=Self;
Caption:=pole[x,y];
Tag:=x*9+y; // - для, например, различия меток в их, например, общем обработчике)
end;
end;
с массивом:ArrLabel: array [1..9, 1..9] of TLabel; - поле формы, например.
...........
procedure TForm1.PoleWrite;
var X, Y: Integer;
begin
for x:=1 to 9 do
for y:=1 to 9 do
begin
ArrLabel[x, y]:=TLabel.create(self);
with ArrLabel[x, y] do begin
SetBounds(15*y, 15*x, 15*y, 15*x);
Parent:=Self;
Caption:=pole[x,y];
end;
end;
end;
← →
{RASkov} © (2008-05-11 00:57) [9]Нет.... с массивом немного не так, а вто так:
........
for x:=Low(ArrLabel) to High(ArrLabel) do
for y:=Low(ArrLabel[x]) to High(ArrLabel[x]) do
begin
ArrLabel[x, y]:=TLabel.create(self);
............
Так всеж будет вернее...
← →
Германн © (2008-05-11 01:11) [10]
> {RASkov} © (11.05.08 00:57) [9]
Тогда уж и
> "Без сохранения" ссылок
измени. X заноси в младшее слово, а Y в старшее. Или наоборот.
← →
{RASkov} © (2008-05-11 01:22) [11]> [10] Германн © (11.05.08 01:11)
>
> > {RASkov} © (11.05.08 00:57) [9]
>
> Тогда уж и
> > "Без сохранения" ссылок
> измени. X заноси в младшее слово, а Y в старшее. Или наоборот.
Что-то до меня не доехало :( Куда чего заносить и зачем... в тэг? смысл?
В прочем это пусть уже автор вопроса сооброжает)
← →
Германн © (2008-05-11 01:35) [12]
> {RASkov} © (11.05.08 01:22) [11]
>
> > [10] Германн © (11.05.08 01:11)
> >
> > > {RASkov} © (11.05.08 00:57) [9]
> >
> > Тогда уж и
> > > "Без сохранения" ссылок
> > измени. X заноси в младшее слово, а Y в старшее. Или наоборот.
>
>
> Что-то до меня не доехало
В твоём примере
> Tag:=x*9+y; // - для, например, различия меток в их, например,
> общем обработчике)
А теперь представь себе работу в отладчике. Ты видишь значение Tag. И чтобы понять его содержимое, т.е. x и y, нужно выполнить div 9 и mod 9. В уме эти операции легко выполнить может только "я не знаю кто". А разделив x и y по словам, ты легко в отладчике получишь их без вычислений в уме или на калькуляторе. И не будешь привязан к конкретному числу, типа 9.
← →
Германн © (2008-05-11 01:37) [13]
> {RASkov} © (11.05.08 01:22) [11]
> В прочем это пусть уже автор вопроса сооброжает)
Впрочем, автор вопроса меня уже давно не интересует. :)
← →
Leonid Troyanovsky © (2008-05-11 13:33) [14]
> RASkov} © (11.05.08 00:57) [9]
> Так всеж будет вернее...
Собс-ручный массив, в отличии от Components/Controls,
не cледит за валидностью ссылок.
А, во-ще-то, TDrawGrid forever ;)
--
Regards, LVT.
← →
Германн © (2008-05-12 01:48) [15]
> Leonid Troyanovsky © (11.05.08 13:33) [14]
>
> А, во-ще-то, TDrawGrid forever ;)
>
И то верно. Какие я на нём "шахматы" сделал. Шедевр! :)
← →
Leonid Troyanovsky © (2008-05-12 05:56) [16]
> Германн © (12.05.08 01:48) [15]
> И то верно. Какие я на нём "шахматы" сделал. Шедевр! :)
Deep Blue?
--
Regards, LVT.
← →
Германн © (2008-05-12 16:06) [17]
> Leonid Troyanovsky © (12.05.08 05:56) [16]
Deep Blue - барахло!
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];
Память: 0.48 MB
Время: 0.044 c