Форум: "Начинающим";
Текущий архив: 2008.10.19;
Скачать: [xml.tar.bz2];
ВнизСоздание и уничтожение объекта Найти похожие ветки
← →
Sw (2008-09-10 06:34) [0]При выборе строки из ниспадающего списка ComboBox запросом к базе данных получаем набор данных, в зависимости от количества полученных строк необходимо создать на форме TLabel.
procedure TForm1.CmbBox1Change(Sender: TObject);
var i,t:integer; //i-счетчик; t-координата верхней точки первого реквизита
var lbl:TLabel;
begin
qry1.Open;
i:=1; t:=24;
while not qry1.Eof do
begin
lbl:=TLabel.Create(Self);
(lbl as TLabel).Name:="Lblelement"+IntToStr(i);
(lbl as TLabel).Parent:=PnlCenter;
(lbl as TLabel).Caption:=elementname;
(lbl as TLabel).Left:=8;
(lbl as TLabel).Top:=t+48*(i-1);
(lbl as TLabel).Enabled:=True;
Application.ProcessMessages;
i:=i+1;
qry1.Next;
end;
qry1.First;
end;
Проблема в том, что при выборе другой строки из ниспадающего списка нужно сначала уничтожить созданные объекты. Очень прошу помочь, подскажите как это можно сделать.
← →
MBo © (2008-09-10 06:58) [1]почему бы не использовать специально обученные контролы?
Или DB-компоненты, или хоть многострочные контролы типа ListView
← →
Anatoly Podgoretsky © (2008-09-10 07:39) [2]> Sw (10.09.2008 6:34:00) [0]
Почему ты приводишь TLabel к TLabel?
← →
Василий Жогарев © (2008-09-10 08:16) [3]
> Sw (10.09.08 06:34)var
I: Integer;
begin
for I := 0 to ControlCount - 1 do
if (Controls[I] is TLabel) then
(Controls[I] as TLabel).Free;
end;
?
← →
Юрий Зотов © (2008-09-10 08:22) [4]Лучше действительно использовать многострочный контрол, но если уж очень хочется иметь набор TLabel, то можно так (лишнее убрано).
type
TForm1 = class(TForm)
...
private
FList: TComponentList;
end;
Обработчик OnCreate:
FList := TComponentList.Create;
Обработчик OnDestroy:
FList.Free;
procedure TForm1.CmbBox1Change(Sender: TObject);
var
i: integer;
begin
FList.Clear;
qry1.Open;
i := 0;
while not qry1.Eof do
begin
FList.Add(TLabel.Create(Self));
with TLabel(FList[i]) do
begin
Parent := PnlCenter;
Caption := elementname;
Left := 8;
Top := 24 + 48 * i;
end;
Inc(i);
qry1.Next;
end;
qry1.First;
end;
← →
Sw (2008-09-10 09:18) [5]
> Anatoly Podgoretsky © (10.09.08 07:39) [2]
> Почему ты приводишь TLabel к TLabel?
Вы имеете в виду (lbl as TLabel).Name? работает и lbl.Name, (((так было в примере, вот думаю, мож так грамотно ((((
Всем спасибо огромное!
> Юрий Зотов
Отдельное спасибо за помощь!
По поводу многострочного контрола, так бы удобнее, но вот никакая светлая мысль мне не приходит (может быть от 2 до 20 строк, например. И все они будут дружненько табличкой сверху вниз в две колонки:
лиц.счет _____________
кор.счет _____________
...........
я думаю, что лучше расположить их на форме в более удобно читаемом виде
(((я только учусь, возможно и ошибаюсь
← →
MsGuns © (2008-09-10 09:25) [6]>По поводу многострочного контрола, так бы удобнее, но вот никакая светлая мысль мне не приходит
Если как справочная информация (без возможности правки) и сравнительно небольшого объема (до 1000 зап), то
а) TStringGrid
b) TListView
c) TTreeView
иначе TDBGrid, TDBCtrlGrid
← →
{RASkov} © (2008-09-10 09:25) [7]> [5] Sw (10.09.08 09:18)
Посмотри на TCtrlGrid... Наверное всеж это для тебя
← →
{RASkov} © (2008-09-10 09:26) [8]> TDBCtrlGrid
Ну да :) Это я и имел в виду)
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2008.10.19;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c