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

Вниз

FindComponent в потоке!   Найти похожие ветки 

 
Le!   (2004-06-23 09:16) [0]

народ подскажите! не работает FindComponent в потоках! реально ли это исправить??


 
Digitman ©   (2004-06-23 09:17) [1]


> не работает FindComponent в потоках


не выдумывай, все работает


 
Le!   (2004-06-23 09:19) [2]

да не работает!  пишет неизвестно что это такое!!


 
Digitman ©   (2004-06-23 09:24) [3]


> да не работает


работает


> пишет неизвестно что это такое


а какое это имеет отношение к "работает" или "не работает" ?
до ран-тайм еще и дело не доходит и никаких потоков еще и в помине нет, это тебе компилятор по рукам дает

FindComponent - это метод объекта
раз это метод объекта, нужно показать компилятору, метод какого конкретно объекта ты вознамерился вызывать, компилятор не обязан догадываться об этом, вот и дает тебе отлуп


 
Anatoly Podgoretsky ©   (2004-06-23 11:33) [4]

Le!   (23.06.04 09:19) [2]
Что так и будем перкликаться - работает/не работает.


 
Тимохов ©   (2004-06-23 11:37) [5]

ОФФ

> Что так и будем перкликаться - работает/не работает.

как в анекдоте:
два милиционера в машине:
-выгляни, посмотри мигалка работает?
второй выглядывает
-работает, не работает, работает, не работает, работает, не работает...


 
Igorek ©   (2004-06-23 13:29) [6]

Разговор ни о чем.
Le, приведи код или четче сформулируй проблему.


 
Le!   (2004-06-30 08:46) [7]

Вот код, очень интересная штука! так вот там просндура Клик совсем не нужна но если переместить ее содержимое под Экзекуте то он не знает что тако Финдкомпонент!

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
 StdCtrls, Psock;

type
 Alex = class(TThread)
 index: integer;
 procedure UpdateLabel;
 private
   { Private declarations }
 protected
   procedure Execute; override;
 end;

type
 TForm1 = class(TForm)
   Button1: TButton;
   Button2: TButton;
   procedure Button1Click(Sender: TObject);
   procedure Button2Click(Sender: TObject);
   procedure Click(Index,pot:integer);
 private
   { Private declarations }
   aa:Alex;
 public
   { Public declarations }
 end;
var
 Form1: TForm1;
 Pot:integer;

implementation

{$R *.DFM}

procedure TForm1.Click(Index,pot:integer);
begin
TLabel(FindComponent("label" + IntToStr(pot))).caption:=IntToStr(Index);
If Index=10000 then TLabel(FindComponent("label" + IntToStr(pot))).caption:="";
If Index=10000 then RemoveComponent(TLabel(FindComponent("label" + IntToStr(pot))));
Application.ProcessMessages;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
For Pot:=1 to 20 do
If not(FindComponent("label" + IntToStr(Pot)) is Tlabel) then  begin
TLabel.Create(Self).Name := "Label" + IntToStr(Pot);
   with TLabel(FindComponent("label" + IntToStr(Pot))) do
   begin
     Left := 150;
     Top := Pot * 20;
     Parent := self;
     Caption:="0";
   end;
Break;
end;
aa:=Alex.Create(true);
aa.Resume;
aa.Priority:=tpNormal;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
aa.Terminate;
aa.Free;
end;

procedure Alex.Execute;
var a:integer;
begin
index:=1;
a:=Pot;
Repeat
Form1.Click(Index,a);
//Synchronize(UpdateLabel);
Inc(index);
Application.ProcessMessages;
until index>10000;
Application.ProcessMessages;
end;

procedure Alex.UpdateLabel;
begin
end;

end.


 
Anatoly Podgoretsky ©   (2004-06-30 08:55) [8]

FindComponent начинается с TComponent


 
Digitman ©   (2004-06-30 09:07) [9]


> Le!   (30.06.04 08:46) [7]
> если переместить ее содержимое под Экзекуте
> то он не знает что тако Финдкомпонент!


разумеется не знает
потому что класс Alex не является потомком класса TComponent


 
Le!   (2004-06-30 09:08) [10]

Но вот этот пример работает!


 
Le!   (2004-06-30 09:13) [11]

потому что класс Alex не является потомком класса TComponent

а как это исправить?? реально ли?


 
Digitman ©   (2004-06-30 09:13) [12]


> Le!   (30.06.04 09:08) [10]
> Но вот этот пример работает!


не "работает", а успешно компилируется !
потому что в этом случае обращение к методу FindComponent происходит в контексте метода Click объекта класса TForm1, а этот класс есть непрямой наследник класса TComponent


 
Digitman ©   (2004-06-30 09:28) [13]


> как это исправить?? реально ли?


type
Alex = class(TThread)
index: integer;
a:integer;
procedure UpdateLabel;
private
  { Private declarations }
protected
  procedure Execute; override;
end;

procedure Alex.DoClick;
begin
Form1.Click(Index,a);
UpdateLabel;
end;

procedure Alex.Execute;
begin
index:=1;
a:=Pot;
Repeat
Synchronize(Click);
Inc(index);
Sleep(0);
until index>10000;
end;



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

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

Наверх




Память: 0.5 MB
Время: 0.056 c
14-1087803385
WondeRu
2004-06-21 11:36
2004.07.11
Помогите решить задачку!


14-1087893791
X9
2004-06-22 12:43
2004.07.11
Редактирование HLP-файлов


3-1087387328
serg128
2004-06-16 16:02
2004.07.11
Как добавить колонку в DBGrid?


14-1088009043
Viktor
2004-06-23 20:44
2004.07.11
Ошибка при запуске


10-1013844574
flash1
2002-02-16 10:29
2004.07.11
Тот же рузультат :(