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

Вниз

Создание 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
15-1208520113
Xerox Phaser 3210
2008-04-18 16:01
2008.06.01
Медленная печать фотографий на Xerox Phaser 3210


15-1208581344
Armond
2008-04-19 09:02
2008.06.01
Кто подскажет, хде мона взять стандартные компоненты вкладки ADO


6-1188535051
minc0rel
2007-08-31 08:37
2008.06.01
Получение значения FileAge по http


9-1170543317
DevilDevil
2007-02-04 01:55
2008.06.01
BGRA


2-1210273581
markus
2008-05-08 23:06
2008.06.01
изменить иконку в любой программе