[Delphi] Eigen component, standaard event afvangen

Pagina: 1
Acties:

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Hallodio,

Ik ben bezig een eigen component te maken.
Een TShellListView. Omdat ie nog niet bestaat ( athans, `k heb `m niet kunnen vinden. )
Maar nu wil ik de Items.Clear procedure afvangen.
Dus dat hij eerst wat anders doet en dan pas het standaard Items.Clear gebeuren.
Dus zoiets (klopt voor geen bal maar..)
code:
1
2
3
4
5
Procedure TShellListView.Items.Clear;
Begin
  //blaba mijn codes
  Items.Clear; // Dit moet dan de standaard procedure aanroepen ofzo.
End;

Ik hoop dat het te snappen is :)
Bij voorbaat dank voor de hulp!

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 februari 2002 10:20 schreef XLerator het volgende:
code:
1
2
3
4
5
Procedure TShellListView.Items.Clear;
Begin
  //blaba mijn codes
  Items.Clear; // Dit moet dan de standaard procedure aanroepen ofzo.
End;
Items.Clear moet je vervangen door:
code:
1
inherited Clear();

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Dan zegt ie bij de regel
code:
1
TShellListView.Items.Clear;

Undeclared indentifier 'Items';

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


  • Tomatoman
  • Registratie: November 2000
  • Nu online

Tomatoman

Fulltime prutser

Je defineert zelf de procedure Clear en voortaan gebruik je TShellListView.Clear in plaats van TShellListView.Items.Clear.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface

type
  TShellListView = class(TListView)
  public
    procedure Clear;
  end;

implementation

procedure TShellListView.Clear;
begin
  //blaba mijn codes
  Items.Clear; 
end;

Een goede grap mag vrienden kosten.


Verwijderd

In Delphi 6 zit jouw TShellListView en de TShellComboBox en nog vele anderen ('k heb Delphi 6 momenteel niet bij 't handje dus naam kan anders zijn).
Maar natuurlijk heb je daar in Delphi 3/4/5 niks aan.

Zoeken bij torry of delphi3000 zal denk ik best wat resultaat opleveren.

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Op maandag 18 februari 2002 13:34 schreef tomatoman het volgende:
Je defineert zelf de procedure Clear en voortaan gebruik je TShellListView.Clear in plaats van TShellListView.Items.Clear.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
interface

type
  TShellListView = class(TListView)
  public
    procedure Clear;
  end;

implementation

procedure TShellListView.Clear;
begin
  //blaba mijn codes
  Items.Clear; 
end;
Bedankt voor de oplossing maar dat is niet wat ik wil.
Ik wil dat de gebruiker op de normale manier kan werken.
Dus ShellView1.Items.Clear. Anders moet ie eerst de help doorlezen, en wat nog minder is, Items.Clear blijft hoe dan ook werken, dus zal diegene niet meteen doorhebben dat ie `t verkeerd doet.
Snap je?

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: 20:40

Creepy

Tactical Espionage Splatterer

Items is weer een component opzich! (een tstrings of een tstringlist).

Dus je zult die moeten overerven, en aanpassen en gebruiken in je tshelllistview.

"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


Verwijderd

Op maandag 18 februari 2002 15:15 schreef Creepy het volgende:
Items is weer een component opzich! (een tstrings of een tstringlist).

Dus je zult die moeten overerven, en aanpassen en gebruiken in je tshelllistview.
Even mugge(n)ziften: TStringList-klasse is een afgeleide van de abstracte TStrings-klasse en de TStrings-klasse is een afgeleide van TPersistent en TPersistent is een afgeleide van TObject. Geen component dus.

Maar om dit op te lossen kun je het volgende proberen:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
unit Unit1;

interface

uses
  Classes;

type
  TMyStringList = class(TStringList)
  public
    procedure Clear; override;
  end;

implementation

procedure TMyStringList.Clear;
begin
  inherited Clear;
  // Jouw code hier
end;

end.

En je snap 'm al. In jouw TShellListView gebruik je i.p.v. TStringList (of TStrings) jouw eigen TMyStringList.

PS. In bovenstaand voorbeeld ben ik van een TStringList afgeleide uitgegaan. Ook had een afgeleide van TStrings gekunt maar TStringList introduceerd een aantal handige methodes zoals ordenen die best handig kunnen zijn.

  • Guillome
  • Registratie: Januari 2001
  • Niet online
ehm 3 dingen:
1. Bedankt voor alle moeite alvast! :)
2. Het is geen StringList maar TListItems he :)
3. Zoiets had ik zelf al bedacht ( niet lullig bedoeld! ) maar ik wou juist de ListView.Items.Clear 'overnemen'.

Maar anders moet t maar zo :)

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 woensdag 20 februari 2002 09:12 schreef XLerator het volgende:
ehm 3 dingen:
1. Bedankt voor alle moeite alvast! :)
Geen dank
2. Het is geen StringList maar TListItems he :)
Dat maakt voor het verhaal helemaal niks uit.
3. Zoiets had ik zelf al bedacht ( niet lullig bedoeld! )
Volgende keer dus even melden wat je zelf al bedacht had om dit soort verhalen te voorkomen.
maar ik wou juist de ListView.Items.Clear 'overnemen'.
Friend functions... niet mogelijk met Object Pascal. Wel met C++. (of heb ik nu een heel verkeerd beeld van friend-functies?) Maar anyways in mijn voorbeeld is toch alleen de Clear ge-override? Dus what's the problem om dat met jouw TListItems te doen?
Maar anders moet t maar zo :)
Ik denk idd. dat je zelf ff je TListItems moet overriden.

  • Guillome
  • Registratie: Januari 2001
  • Niet online
Op woensdag 20 februari 2002 11:25 schreef hvdberg het volgende:

Dat maakt voor het verhaal helemaal niks uit.
Nee ok, was alleen maar ter verduidelijking hoor ;)
Volgende keer dus even melden wat je zelf al bedacht had om dit soort verhalen te voorkomen.
Op maandag 18 februari 2002 14:33 schreef XLerator het volgende:

[..]

Bedankt voor de oplossing maar dat is niet wat ik wil.
Ik wil dat de gebruiker op de normale manier kan werken.
Dus ShellView1.Items.Clear. Anders moet ie eerst de help doorlezen, en wat nog minder is, Items.Clear blijft hoe dan ook werken, dus zal diegene niet meteen doorhebben dat ie `t verkeerd doet.
Snap je?
Had ik min of meer al gedaan dus :)
Friend functions... niet mogelijk met Object Pascal. Wel met C++. (of heb ik nu een heel verkeerd beeld van friend-functies?) Maar anyways in mijn voorbeeld is toch alleen de Clear ge-override? Dus what's the problem om dat met jouw TListItems te doen?
Hmm ik ken geen Friend Functions.
Ik denk idd. dat je zelf ff je TListItems moet overriden.
Dus als ik dat doe kan ik dan functies aan ListView.Items toevoegen of heb ik dan ListView.MyItems?

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 woensdag 20 februari 2002 14:25 schreef XLerator het volgende:

[..]

Nee ok, was alleen maar ter verduidelijking hoor ;)
[..]


[..]

Had ik min of meer al gedaan dus :)
[..]
Ik bedoelde het ietwat anders, maar maakt niks uit voor de rest.
Hmm ik ken geen Friend Functions.
[..]
Het is voor mij te lang geleden om ook maar iets nuttigs over Friend functions te melden, dus doe ik het ook maar niet.
Dus als ik dat doe kan ik dan functies aan ListView.Items toevoegen of heb ik dan ListView.MyItems?
Nee, ik bedoel het anders:
Je moet de de property Items van de ListView aanpassen naar je eigen afgeleide van TListItems.

Dit doe je door een eigen afgeleide van TListItems te maken en een eigen afgeleide van TListView.

Suc6
Pagina: 1