Главная страница
    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.044 c
6-1188535051
minc0rel
2007-08-31 08:37
2008.06.01
Получение значения FileAge по http


2-1209808931
assassin8899
2008-05-03 14:02
2008.06.01
автодобавление


2-1210342406
DooRs
2008-05-09 18:13
2008.06.01
Формула


2-1210619333
Nemeziz
2008-05-12 23:08
2008.06.01
Как проверить изменялся ли файл


2-1210586371
NieL
2008-05-12 13:59
2008.06.01
функция GetAge





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