Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2008.10.05;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.01 c
15-1219010733
No_Dead(w)
2008-08-18 02:05
2008.10.05
монитор не выключается%)


2-1219413550
zoh
2008-08-22 17:59
2008.10.05
image&text


2-1217651715
Newser
2008-08-02 08:35
2008.10.05
Как добавить EXE файл в своё приложение и запустить его?


2-1219978334
FIL-23
2008-08-29 06:52
2008.10.05
Сортировка записей


2-1219321852
kopernik21187
2008-08-21 16:30
2008.10.05
проблема с SQL-запросом в связанных таблицах





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