Текущий архив: 2008.08.03;
Скачать: CL | DM;
Вниз
Присваивания имен в цикле Найти похожие ветки
← →
DJ_UZer © (2008-07-01 08:29) [0]Привет все, такая проблема, не знаю как сдлать присваивание имен в цикле, например, есть label от 1 до 5:
for i:=1 to 5 do
label.caption := inttostr(i);
← →
KilkennyCat © (2008-07-01 08:39) [1]Можно так:
var
arlab : array[0..4] of TLabel;
.........................
x := 0;
for i := 0 to Form.ComponentCount - 1 do begin
if (components[i] is TLabel) then begin
inc(x);
arlab[i] := TLabel(components[i]);
end
end;
........................
for i:=1 to 5 do arlab[i].caption := inttostr(i);
← →
DJ_UZer © (2008-07-01 09:14) [2]компилятор ругается!
← →
Anatoly Podgoretsky © (2008-07-01 09:24) [3]А для чего тут цикл?
← →
KilkennyCat © (2008-07-01 09:25) [4]
> DJ_UZer © (01.07.08 09:14) [2]
а не копируй бездумно....
← →
DJ_UZer © (2008-07-01 09:34) [5]KilkennyCat, а я и не бездумно!
вот на это ругается for i:=1 to 5 do arlab[i].caption := inttostr(i);
Anatoly Podgoretsky, а то код большой будет, да к тому же там есть зависимость от числа мне нужно от 5 до 20 присваиваний..
← →
Галинка (2008-07-01 09:38) [6]а зачем два цикла? Одного должно бы хватить
var
x: integer;
.........................
x := 1;
for i := 0 to Form.ComponentCount - 1 do begin
if (components[i] is TLabel) then begin
(components[i] As TLabel).Caption = inttostr(x++);
end
end;
← →
Галинка (2008-07-01 09:40) [7]ну так и будет ругаться... там вообще-то в первом цикле надо бы arlab[x]=... А то i это индекс массива контролов формы, а тут им же по массиву [0..4] пробегается.
← →
KilkennyCat © (2008-07-01 09:47) [8]
> Галинка (01.07.08 09:40) [7]
???? при чем здесь имя переменной ???
там неправильные границы массива, это факт.
← →
Anatoly Podgoretsky © (2008-07-01 09:55) [9]
> Anatoly Podgoretsky, а то код большой будет, да к тому же
> там есть зависимость от числа мне нужно от 5 до 20 присваиваний.
> .
Зачем нужно?
← →
Anatoly Podgoretsky © (2008-07-01 09:57) [10]
> там неправильные границы массива, это факт.
Откуда взялся массив в Label?
← →
Галинка (2008-07-01 09:59) [11]в исходном коде автора вроде только заголовки надо присваивать меткам. Или? Да и у тебя в примере только с заголовками меток работаешь. Только дополнительно зачем-то забиваешь память ненужным массивом объектов. Когда с ними и напрямую работать можно. Зачем так сложно? Опять же такой вариант допускает больше возможностей ошибиться ((
← →
KilkennyCat © (2008-07-01 12:16) [12]
> Или?
Возможно. Я понятия не имею, чего хочет автор. Сейчас он хочет то, потом захочет это. Я привел один из вариантов работы с компонентами как с массивом.
> Да и у тебя в примере только с заголовками меток работаешь.
Мне нужно было привести примеры всего, что можно сделать с TLabel?
> зачем-то забиваешь память ненужным массивом объектов.
Не знаю, что и сказать...
> Когда с ними и напрямую работать можно.
Это как в Вашем примере? Прямее некуда. Особенно, если потребуется обратиться, например, к пятой, шестой, десятой и пятнадцатой.
> Зачем так сложно?
Для простоты.
> больше возможностей ошибиться
Ну, если ЭТОТ код допускает возможности ошибки, то, может, лучше пойти работать дворником?
← →
Галинка (2008-07-01 12:44) [13]так у тебя уже в коде ошибка. Ты же сам индексы перепутал (только не надо говорить, что автора ловил).
← →
KilkennyCat © (2008-07-01 12:52) [14]Ты же сам индексы перепутал (только не надо говорить, что автора ловил).
c x я опечатался. это да. что же касается индексов, то я не путал. и не ловил. я скопипастил из сабжа. Но я не писал программу, я не давал готового решения, чтоб сразу вставить в проект, а показывал пример.
← →
Leonid Troyanovsky © (2008-07-01 13:36) [15]
> DJ_UZer © (01.07.08 09:34) [5]
> там есть зависимость от числа мне нужно от 5 до 20 присваиваний.
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TLabels = record
ARect: TRect;
Caption: String;
end;
TForm1 = class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure FormPaint(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
Labels: array [0..9] of TLabels;
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
const
cformat = "Label%2.2d";
procedure TForm1.FormCreate(Sender: TObject);
var
i: Longint;
begin
for i := Low(Labels) to High(Labels) do
with Labels[i] do
begin
ARect := Rect(10, 24*i, 100, 24*i + 24);
Caption := Format(cformat, [i]);
end;
end;
procedure TForm1.FormPaint(Sender: TObject);
var
i: Longint;
begin
for i := Low(Labels) to High(Labels) do
with Labels[i] do
begin
Canvas.FillRect(ARect);
Canvas.TextRect(ARect, ARect.Left, ARect.Top, Caption);
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i: Longint;
begin
for i := Low(Labels) to High(Labels) do
with Labels[i] do
Caption := Format(cformat, [Random(10)]);
Invalidate;
end;
--
Regards, LVT.
Страницы: 1 вся ветка
Текущий архив: 2008.08.03;
Скачать: CL | DM;
Память: 0.5 MB
Время: 0.022 c