Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.052 c
2-1210094060
b86
2008-05-06 21:14
2008.06.01
как сохранить в .txt


2-1210155494
Первокласник Вася
2008-05-07 14:18
2008.06.01
таймер


2-1210266876
Riply
2008-05-08 21:14
2008.06.01
Снова выравнивание памяти :)


2-1210593038
Johnnnn
2008-05-12 15:50
2008.06.01
TwebBrowser через сокс?


2-1210157112
Mishenka
2008-05-07 14:45
2008.06.01
Как вывести монитор из стендбая?





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский