Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Проблема с изменением св-в компонент в реалтайм. [XP]


Страницы:   1 2

AndreyBg ©   (2008-08-20 15:36:00) 

Возникла след-я проблема, не могу понять в чем ошибка.
В реалтайм создаю на формочке группу компонентов 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;


Leonid Troyanovsky   (2008-08-21 13:44:00) [1]


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

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

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

--
Regards, LVT.


MsGuns   (2008-08-21 11:33:00) [2]

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

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


Amoeba   (2008-08-21 11:06:00) [3]

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


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

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


Leonid Troyanovsky   (2008-08-21 11:05:00) [5]


> AndreyBg   (21.08.08 10:44) [17]

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

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

--
Regards, LVT.


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

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


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


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


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


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

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


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


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


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


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

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

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

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


{RASkov}   (2008-08-21 09:39:00) [11]

> [12] AndreyBg   (21.08.08 09:32)

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


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


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


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


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


MyRunTimeCreatedObject.OnSomeEvent := [SomeObject.]SomeEventHandler;


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

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


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

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


MsGuns   (2008-08-20 17:41:00) [15]

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

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


Anatoly Podgoretsky   (2008-08-20 17:37:00) [16]

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


MsGuns   (2008-08-20 15:56:00) [17]

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


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


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


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

Пробуй:

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


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

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


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

> TmpDS.fbn('b_barcode').AsString

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


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо