Novo

Forum kao aplikacija na telefonu

Dodajte forum na početni ekran i koristite ga kao aplikaciju, sa menijem na dnu ekrana.

Aplikacija bez forme i problem prilikom postavljanja Event Handlera

  • 5 odgovora
  • 3.505 pregleda

Najnovija ↓

Aplikacija bez forme i problem prilikom postavljanja Event Handlera 30.07.2007. u 11:28 · pre 234 meseca #1
Dakle potrebna mi je sto manja aplikacija, a da bih to izveo moram pre svega da izbacim Forms unit. Posto ne mogu jednostavno da ga izbacim iz uses clause sklonio sam ceo unit.pas i koristim Project1.dpr fajl za pisanje coda.
Da bi program ostao aktivan i po zavrsetku svih komandi ubacio sam while loop sa GetMessage() i sve to izgleda ovako nekako:

Code:

program Project1;

uses
  Windows;

var
  clsocket: TClientSocket;

{$R *.res}

begin

  while GetMessage(Msg,0,0,0) do
   begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
   end;
end.


Napravio sam svoju classu kako bih mogao da definisem svoje event handlere. Potrebni su mi handleri za TClientSocket ili TidIRC (jos razmisljam o ovome, ali i nije mnogo bitno za moj trenutni problem). Sve je to izgledalo ovako:

Code:

program Project1;

uses
  Windows,
  ScktComp;

  type
   TClsocket = class(TClientSocket)
   procedure onWrite2(Sender: TObject; Socket: TCustomWinSocket);
   end;

var
  Msg: Tmsg;
  clsocket: TClientSocket;

{$R *.res}

procedure TClsocket.onWrite2(Sender: TObject; Socket: TCustomWinSocket);
begin
{wirte stuff... nebitno }
end;

begin
TClsocket.Create(clsocket);
clsocket.OnWrite:=TClsocket.onwrite2; >>>>> ovde se javlja error tipa, Incompatible types TSocketNotifyEvent and procedure
  while GetMessage(Msg,0,0,0) do
   begin
    TranslateMessage(Msg);
    DispatchMessage(Msg);
   end;
end.


Gde sam pogresio? Ne kapiram bas najbolje ovo sa classama..
Re: Aplikacija bez forme i problem prilikom postavljanja Event Handlera 30.07.2007. u 12:06 · pre 234 meseca #2
Mislim da ne treba da nasledjujes svoju klasu iz TClientSocket vac da clentsocket bude filed tvoje klase.
U konstruktoru moras da kreiras instancu i da napravis povezivanje.
Onda napravis instancu svoje klase u kodu aplikacije:

type
TClsocket = class
procedure onWrite2(Sender: TObject; Socket: TCustomWinSocket);
FClient : TClientSocet;
end;

procedure TClsocket.onWrite2(Sender: TObject; Socket: TCustomWinSocket);
begin
{wirte stuff... nebitno }
end;

constructor TClSocket.Create;
begin
CLient := TClientSocket.Create(Application);
Client.OnWrite := onWrite2;
end;

begin
clsocket := TClsocket.Create(aplication);
end;
Re: Aplikacija bez forme i problem prilikom postavljanja Event Handlera 31.07.2007. u 11:19 · pre 234 meseca #4
Da,
type
TClsocket = class
procedure onWrite2(Sender: TObject; Socket: TCustomWinSocket);
FClient : TClientSocet;
Constructor Create;
end;

zaboravio sam.
Kako ti brljavi sa Create? Jel mozes malo detaljnije da objasnis?
Ja sam stavio da je owner application. Application je definisan u forms unitu tako da ako neces da koristis forms jednostavno umesto application koristi nil.
I nemoj da zaboravis da unistis objekte pri izlasku iz aplikacije.
Takodje mi nije jasno zasto ne koristis unite.
Ne mora svaki unit da ima formu.
Jednostavno izaberes New->Unit.
Izbaci forms iz uses klauzule kad ga vec ne koristis i to je to.
Re: Aplikacija bez forme i problem prilikom postavljanja Event Handlera 31.07.2007. u 13:57 · pre 234 meseca #5
A zbog cega uopste onda pocinjes da pravis projekat kao WinApplication ? Zasto jednostavno ne pravis obicnu Console app. ?

Onda nemas potrebe da izbacujes forme, nego po potrebi dodajes unit-e koji tebi odgovaraju.

Pozdrav
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme