🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.pascal
Article #92997

Re: [Lazarus] Klasa dziedzicząca po TCustomStringGrid

#92997
From: Terrmit
Date: Wed, 28 Apr 2010 14:00
68 lines
2884 bytes
W dniu 20.04.2010 21:41, Terrmit pisze:
>> Gdyby komuś miał jeszcze jakiś pomysł
>
> Oczywiście miało być:
> "Gdyby ktoś miał jeszcze jakiś pomysł"
>

To ja mam taki pomysł, u mnie działa :)
więc może u Ciebie też ;D

W swojej klasie, np. TMyStringGrid dopisz:

<code>

TMyStringGrid = class(TCustomStringGrid)
   private
     FOnEditButtonClick: TNotifyEvent;

   protected
     //procedura obsługi nowego zdarzenia OnEditButtonClick
     procedure EditButtonClicked(Sender: TObject);

   public
     //w public musi być konstruktor, bo będzie nam potrzebny
     constructor Create(AOwner: TComponent); override;

   published
     //w published nasze zdarzenie dla Inspektora obiektów
     property OnEditButtonClick: TNotifyEvent read FOnEditButtonClick
                                 write FOnEditButtonClick;
   end;

//A teraz nasze procedurki

procedure TMyStringGrid.EditButtonClicked(Sender: TObject);
begin
   //w EditButtonClicked dopisujemy
   if Assigned(OnEditButtonClick) then OnEditButtonClick(self);

   //a tu wpisujemy to co ma się stać po kliknięciu
   ShowMessage('Nastąpiła eksplozja!');
end;

//W konstruktorze, jeszcze przed inherited Create(AOwner)
//przypisujemy naszą procedurę do OnEditButtonClick rodzica

constructor TMyStringGrid.Create(AOwner: TComponent);
begin
   inherited OnEditButtonClick := @EditButtonClicked;
   inherited Create(AOwner);

   //tu dalszy kod konstruktora
end;

</code>

Nie wiem, czy powinienem ustawiać nil na OnEditButtonClick
w destruktorze. Może dla porządku należałoby.

Fajnie byłoby gdyby procedura EditButtonClicked mogła być
wreszcie virtual, aby można ją było już dalej dziedziczyć.
Na razie nie wiem jak to ugryźć.

Może ktoś ma jakieś uwagi/wskazówki do tego kodu?

Pozdrawiam,

Sławek
Technical Details
Message-ID: <hr9f5b$19if$1@news.mm.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.task.gda.pl!news.mm.pl!not-for-mail
References: <hqimar$2mct$1@news.mm.pl> <gzbqyg47z8mz.1cw1eop9xnav5.dlg@40tude.net> <hql001$1oem$1@news.mm.pl> <hql04f$1oem$2@news.mm.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.task.gda.pl!news.mm.pl!not-for-mail
From: Terrmit <terrmitv@poczta.onet.pl>
Newsgroups: pl.comp.lang.pascal
Subject: Re: [Lazarus] Klasa dziedzicząca po
 TCustomStringGrid
Date: Wed, 28 Apr 2010 16:00:14 +0200
Organization: Multimedia Polska SA
Lines: 68
Message-ID: <hr9f5b$19if$1@news.mm.pl>
References: <hqimar$2mct$1@news.mm.pl> <gzbqyg47z8mz.1cw1eop9xnav5.dlg@40tude.net> <hql001$1oem$1@news.mm.pl> <hql04f$1oem$2@news.mm.pl>
NNTP-Posting-Host: host-89-231-112-128.warszawa.mm.pl
Mime-Version: 1.0
X-Trace: news.mm.pl 1272463339 42575 89.231.112.128 (28 Apr 2010 14:02:19 GMT)
X-Complaints-To: abuse@multimedia.pl
NNTP-Posting-Date: Wed, 28 Apr 2010 14:02:19 +0000 (UTC)
User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.9) Gecko/20100330 Fedora/3.0.4-1.fc12 Lightning/1.0b2pre Thunderbird/3.0.4
In-Reply-To: <hql04f$1oem$2@news.mm.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit