[Delphi] Eigen componentje.

Pagina: 1
Acties:

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Hoi.
Ik ben bezig met een eigen component.
Nu heb ik er 2 Classes in.
Een TListView en een TItems;
Maar hoe kan ik nu bijv. het volgende doen?
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
  TMyItems = class(TListItems)
  public
    x : Integer;
    procedure Clear;
  end;

  TVirtualShellView = class(TListView)
  private
......
  public
    Items : TMyItems;
    Files : TStringList;
...
..
  end;

TMyItems.Clear;
Begin
  VirtualShellView.Files  // Dus dan wil ik hier variabelen en/of procedures van de TVirtualShellView opvragen
end;

hoe moet dat?

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Verwijderd

Wat wil je nu precies weten?

TMyItems is niet gebaseerd op TVirtualShellView. In de klasse TMyItems zal je dus alleen de public functies / procedures / properties kunnen gebruiken en niet de private en protected.

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Wat ik wil weten staat in mijn 1e post hier :)
Hoe ik in een procedure van TMyListItems een variabele ofzo kan gebruiken van de TVirtualShellView class.
Publics kan ik ook niet bij hoor trouwens

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Delphi32
  • Registratie: Juli 2001
  • Laatst online: 11-09 11:16

Delphi32

Heading for the gates of Eden

Op zondag 17 maart 2002 22:47 schreef XLerator het volgende:
Wat ik wil weten staat in mijn 1e post hier :)
Hoe ik in een procedure van TMyListItems een variabele ofzo kan gebruiken van de TVirtualShellView class.
Hmm ik weet niet of dat design-technisch gesproken zo handig is, maar dat is jouw keus. Dus ga ik je serieus nemen en een handreiking doen:
Publics kan ik ook niet bij hoor trouwens
Oh jawel hoor, en als TVirtualShellView en TMyListItems in dezelfde unit zijn gedeclareerd, kun je zelfs bij de private dingen :)

Wat je nodig hebt om TMyListItems toegang te geven tot TVirtualShellView, is een Instance van TVirtualShellView. Je moet tenslotte de compiler duidelijk maken welk concreet object (van type TVirtualShellView) je wilt gebruiken in je TMyListItems procedure.
Je kunt dit doen middels een Owner parameter bij de Create van je TMyListItems.
code:
1
2
3
4
5
constructor TMyListItems.Create(aOwner: TVirtualShellView);
begin
  inherited Create;
  FOwner := aOwner;
end;

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Op maandag 18 maart 2002 00:59 schreef Delphi32 het volgende:
Hmm ik weet niet of dat design-technisch gesproken zo handig is, maar dat is jouw keus. Dus ga ik je serieus nemen en een handreiking doen:
Huh? Waarom is dat niet handig dan? Ik weet daar nix van?
Oh jawel hoor, en als TVirtualShellView en TMyListItems in dezelfde unit zijn gedeclareerd, kun je zelfs bij de private dingen :)

Wat je nodig hebt om TMyListItems toegang te geven tot TVirtualShellView, is een Instance van TVirtualShellView. Je moet tenslotte de compiler duidelijk maken welk concreet object (van type TVirtualShellView) je wilt gebruiken in je TMyListItems procedure.
Je kunt dit doen middels een Owner parameter bij de Create van je TMyListItems.
code:
1
2
3
4
5
constructor TMyListItems.Create(aOwner: TVirtualShellView);
begin
  inherited Create;
  FOwner := aOwner;
end;
Aha :) Inderdaad.
Maar nu heb ik nog 1 probleem
Als ik TMyItems = class(TListItems) enzo boven die van TVirtualShellView zet, kent ie de TVirtualShellView niet.
Dus dan kan ik dat met die FOwner niet doen.
En als ik het andersom neerzet kan ik die items in de TVirtualShellView = class(TListView) enzo niet declareren op deze manier:
code:
1
2
3
4
  public
    Items : TMyItems;
...
...

Hoe moet dat dan?

Als ik TMyItems bovenaan zet en TVirtualShellView vervang door TComponent, en dan in de TMyItems.Clear het volgende zet
code:
1
2
3
4
procedure TMyItems.Clear;
Begin
  Clear;
End;

, dan doet ie t niet. Dan hangt ie helemaal. Geen foutmelding ofzo. Niets.

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Guillome
  • Registratie: Januari 2001
  • Niet online
Hmm hij doet t nu iets beter.
Als ik TMyItems = class; bovenaan zet kent ie `m gewoon.
Maar hij blijft hangen als ik een eigen Clear procedure maak.
Dan hangt ie bij het Clear-commando... :'(

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


Verwijderd

Op maandag 18 maart 2002 13:09 schreef XLerator het volgende:

Dan hangt ie bij het Clear-commando... :'(
code:
1
2
3
4
procedure TMyItems.Clear;
Begin
  Clear;
End;
Dat verbaast mij niks, aangezien je de procedure recursief aanroept. Wat is de bedoeling van die Clear statement?

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Ooowwwwww duh...
Dom van mij zeg |:(
lol.
Nou ja, ik heb een TVirtualShellTree.
En als je items.clear doet moet ie o.a. de imagelist legen, en nog een aantal dingen.

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:42

Creepy

Tactical Espionage Splatterer

moet de tshellitems.clear hetzelfde doen als de baseklasse van tshellitems?
code:
1
2
3
4
5
6
Tshellitems.clear;
begin
     { hier nog wat specifieke dingen die alleen voor
     TShellItems gelden, en niet voor TListItems. }
     inherited; { Roep de .clear van TListItems aan }
end;

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Guillome
  • Registratie: Januari 2001
  • Niet online
Tnx Creepy, dat is precies wat ik nodig heb!
Kan ik eindelijk verder.
Tnx again

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:42

Creepy

Tactical Espionage Splatterer

Op maandag 18 maart 2002 16:40 schreef XLerator het volgende:
Tnx Creepy, dat is precies wat ik nodig heb!
Kan ik eindelijk verder.
Tnx again
Graag gedaan, maaruh.. misschien is het eens handig dat je een Delph boek, cursus, online iets gaat lezen, of wat source gaat bekijken ofzo... want dit is redelijk RTFM werk eigenlijk.....

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • Guillome
  • Registratie: Januari 2001
  • Niet online
Ow das niet echt nodig hoor :)
Ik ben al een lange tijd aan het programmeren, maar hier kwam ik ff niet uit.
Maar nu wel.
Ik heb al een aantal programmas gemaakt, die meer dan een apje zijn :)

If then else matters! - I5 12600KF, Asus Tuf GT501, Gigabyte Gaming OC 16G 5080 RTX, Asus Tuf Gaming H670 Pro, 48GB, Corsair RM850X PSU, SN850 1TB, Arctic Liquid Freezer 280, ASUS RT-AX1800U router


  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 10:42

Creepy

Tactical Espionage Splatterer

Maar wel nieuw als het aankomt op eigen objecten schrijven :)

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 27-06 10:54
Ik heb wel een Delphi boek voor je..

:D

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?

Pagina: 1