![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Проблема с изменением св-в компонент в реалтайм. [XP]
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
как реализовано?