Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1220944731
Кирей
2008-09-09 11:18
2008.10.19
ошибка при работе с экселем OLE error 800A03EC


4-1198242400
Dim07
2007-12-21 16:06
2008.10.19
Готовность принтера


15-1220026293
XentaAbsenta
2008-08-29 20:11
2008.10.19
Ветка - "Проектирование"


2-1221213675
interandry
2008-09-12 14:01
2008.10.19
MDI окна


15-1220003252
data
2008-08-29 13:47
2008.10.19
Вопрос к знатокам оракла. Есть ли ограничение на кол-во действий





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