Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.10.05;
Скачать: CL | DM;

Вниз

Проблема с изменением св-в компонент в реалтайм.   Найти похожие ветки 

 
AndreyBg   (2008-08-20 15:36) [0]

Возникла след-я проблема, не могу понять в чем ошибка.
В реалтайм создаю на формочке группу компонентов TLabel. Задаю нужные свойства, все нормально.
Затем пытаюсь изменить их капшион, а он не меняется.. ;( Подскажите, пожалуйста в чем может быть дело?
Код:
     for i := 1 to BarCodeColumn do
      begin
        for j := 1 to 10 do
          begin
            TDisp := TLabel.Create(FrmPrintBuff);
            TDisp.Name := "TDisp" + IntToStr((j-1) + (i-1)*10);
            TDisp.AutoSize := false;
            TDisp.Parent := FrmPrintBuff;
            TDisp.Height := 21;
            TDisp.Width := 154;
            TDisp.Top := 8 + (j-1) * 27;
            TDisp.Left := 35 + 196 * (i - 1);
            TDisp.Caption := "000000000000";
          end;
       end;
       
     with dm do
      begin
      i:= 0;
      dm.TmpDS.First;
      while not dm.TmpDS.eof do
       begin
         TDisp := FrmPrintBuff.FindComponent("Disp"+inttostr(i)) as TLabel;
         //Disp_Name := TmpDS.fbn("b_barcode").AsString;
        TDisp.Caption := TmpDS.fbn("b_barcode").AsString;//Disp_Name; // Вот этого присвоения не происходит !!
         FrmPrintBuff.Memo1.Lines.Add(TmpDS.fbn("b_barcode").AsString);
         inc(i);
         dm.TmpDS.Next;
       end;
      end;
      FrmPrintBuff.ShowModal;


 
Medbe}I{onok XML ©   (2008-08-20 15:39) [1]

В цикл while не попадаешь


 
brother ©   (2008-08-20 15:40) [2]

> TmpDS.fbn("b_barcode").AsString

что это? где описано и как?


 
Германн ©   (2008-08-20 15:42) [3]


> TDisp.Name := "TDisp" + IntToStr((j-1) + (i-1)*10);


> TDisp := FrmPrintBuff.FindComponent("Disp"+inttostr(i))
> as TLabel;


 
AndreyBg   (2008-08-20 15:43) [4]

в цикл попадаю, проверял..
Закоментированная строка Disp_Name получает нужные значения!


 
brother ©   (2008-08-20 15:44) [5]

> TmpDS.fbn("b_barcode").AsString

как реализовано?


 
AndreyBg   (2008-08-20 15:45) [6]

Германн, спасибо...
за день совсем уже ослеп.. =)


 
Сергей М. ©   (2008-08-20 15:48) [7]


> Вот этого присвоения не происходит


С чего ты взял ?

Пробуй:

TDisp.Caption := TmpDS.fbn("b_barcode").AsString;
FrmPrintBuff.Memo1.Lines.Add(TDisp.Caption);


 
MsGuns ©   (2008-08-20 15:56) [8]

А зачем для отображения табличных данных использовать лабели, если для этого существует "таблицевидные" компоненты ?


 
Anatoly Podgoretsky ©   (2008-08-20 17:37) [9]

Что бы таблоид построить


 
MsGuns ©   (2008-08-20 17:41) [10]

>Anatoly Podgoretsky ©   (20.08.08 17:37) [9]
>Что бы таблоид построить

Так эта.. можно и в обычном стрингриде зафигачить и бегущую строку, и моргание и черта в ступе
Зачем же каждый раз содавать тучу объектов и затем килять их ?


 
AndreyBg   (2008-08-21 09:30) [11]

потому что так начальство захотело...
чтоб мол в уголке висела формочка поверх всех окон и показывала данные.
а не таблица, потому что размеры формы и положение зависят от количества данных, а оно переменно... ну зачем лишнее место занимать?


 
AndreyBg   (2008-08-21 09:32) [12]

А еще подскажите, пожалуйста, как вот такой вот созданной кнопке можно обработчик назначить OnClick, например.


 
Сергей М. ©   (2008-08-21 09:36) [13]


> как вот такой вот созданной кнопке


Какая еще кнопка ? Ты ж лейбл создаешь ?


> обработчик назначить


MyRunTimeCreatedObject.OnSomeEvent := [SomeObject.]SomeEventHandler;


 
{RASkov} ©   (2008-08-21 09:39) [14]

> [12] AndreyBg   (21.08.08 09:32)

Так и назначай:
Knopka.OnClick:=SovmestimyMetod;


 
AndreyBg   (2008-08-21 10:21) [15]

на простое присвоиение получаю ошибку:
E2010 Incompatible types: "TNotifyEvent" and "procedure, untyped pointer or untyped parameter"

Присвоить естественно пытаюсь обычную процедуру:

procedure OnClickTBtn(sender: TObject);
begin
ShowMessage((sender as TButton).Name);
end;


 
Сергей М. ©   (2008-08-21 10:42) [16]


> Присвоить естественно пытаюсь обычную процедуру


А надо не "обычную", а метод класса.


 
AndreyBg   (2008-08-21 10:44) [17]

то есть мне теперь класс какой-то дополнительно создавать? =(
А никак нельзя без оного?


 
Сергей М. ©   (2008-08-21 10:45) [18]


> мне теперь класс какой-то дополнительно создавать?


Не обязательно.
Можно использовать имеющийся, например, класс существующей формы.


 
AndreyBg   (2008-08-21 11:01) [19]

А можно примерчик как это реализовать? Ну или ссылку, где почитать?


 
Leonid Troyanovsky ©   (2008-08-21 11:05) [20]


> AndreyBg   (21.08.08 10:44) [17]

> то есть мне теперь класс какой-то дополнительно создавать?

Если контролы создаются динамически, то проще перекрыть Click.

--
Regards, LVT.


 
Сергей М. ©   (2008-08-21 11:06) [21]

http://www.google.ru/search?q=Delphi+%D0%BA%D0%B0%D0%BA+%D0%BD%D0%B0%D0%B7%D0%BD%D0%B0%D1%87%D0%B8%D1%82%D1%8C+%D0%BE%D0%B1%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D1%87%D0%B8%D0%BA+%D1%81%D0%BE%D0%B1%D1%8B%D1%82%D0%B8%D1%8F+%D0%B2+run-time&ie=utf-8&oe=utf-8&aq=t&rls=org.mozilla:ru:official&client=firefox-a


 
Amoeba ©   (2008-08-21 11:06) [22]

Читать здесь:
http://www.delphikingdom.com/asp/viewitem.asp?catalogid=342


 
MsGuns ©   (2008-08-21 11:33) [23]

>Leonid Troyanovsky ©   (21.08.08 11:05) [20]
>Если контролы создаются динамически, то проще перекрыть Click.

Может быть и правильнее с т.з. "классового" подхода, но не проще
Просто в любом имеющемся в текущей форме ПОДОБНОМ контроле определить обработчик, в котором написать код для "виртуального" контрола, а ссылку на него из имеющегося контрола удалить (или заменить на "свой"). Назначение же событию этого обработчика в рантайме занимает одну строку.


 
Leonid Troyanovsky ©   (2008-08-21 13:44) [24]


> MsGuns ©   (21.08.08 11:33) [23]

> (или заменить на "свой"). Назначение же событию этого обработчика
> в рантайме занимает одну строку.

А при перекрытии - одно слово "override".
Какая разница, чего плодить: TLabel or TMyLabel.

--
Regards, LVT.



Страницы: 1 вся ветка

Текущий архив: 2008.10.05;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.016 c
15-1218525210
oldman
2008-08-12 11:13
2008.10.05
Последовательность действий при заправке кардриджа (лазер)


1-1199488934
Vopros123123
2008-01-05 02:22
2008.10.05
Как снять флажок из Delphi у компонента HTML "checkbox"?


11-1193921645
MTsv DN
2007-11-01 15:54
2008.10.05
QProg и KOL v.2.83 (и выше)


11-1194225257
nsvi
2007-11-05 04:14
2008.10.05
Куда пропал OnEndEditLVItem?


15-1218153220
Украинец
2008-08-08 03:53
2008.10.05
Delphi и Gecko