🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

[Lazarus] Klasa dziedzicząca po TCustomStringGrid

#92992
From: Terrmit
Date: Mon, 19 Apr 2010 22:41
44 lines
2769 bytes
Witam,
Tym razem chciałbym zapytać o bardziej złożony problem
(a może jest on prosty, tylko ja mam za małą wiedzę).

W programie używam własny komponent StringGrid:
   TMyStringGrid = class(TCustomStringGrid)

Wprowadziłem w nim wiele "innowacji" :) bo standardowy
StringGrid nie za bardzo mi odpowiadał.

W mojej klasie pokrywam też kilka zdarzeń między innymi
procedure HeaderClick(IsColumn: Boolean; index: Integer); override;
procedure DrawCell(aCol,aRow: Integer; aRect: TRect; 
aState:TGridDrawState); override;
i kilka innych

Jednak nie mogę (albo nie wiem jak) pokryć zdarzenia OnEditButtonClicked
procedure EditButtonClicked(Sender: TObject);
http://lazarus-ccr.sourceforge.net/docs/lcl/grids/tcustomgrid.html

Jeśli do TStringGrid.Columns.Items[x].ButtonStyle przypiszemy
cbsButton albo cbsEllipsis, to w po wybraniu komórki z takiej kolumny
mamy dodatkowy przycisk. Po jego kliknięciu może nam się otworzyć
np. jakieś okno dialogowe. Właśnie zdarzenie OnEditButtonClicked
informuje, że kliknięto taki button.
Chciałbym aby moja klasa TMyStringGrid zawsze w takim momencie
sprawdzała jaka dana jest w komórce (tekst, czy liczba)
i w zależności od tego po kliknięciu na button komórki wyświetlała
inne okno dialogowe. Ponieważ w programie używam takich tabel
kilkadziesiąt, a niektóre będą też tworzone dynamicznie, to chciałbym
włączyć to do klasy, a nie oprogramowywać każdą jej instancję.
Niestety procedura EditButtonClicked w przeciwieństwie do
HeaderClick czy DrawCell nie jest oznaczona słowem virtual,
stąd problem.

Czy ktoś mógłby mi poradzić jak to zrobić (i czy w ogóle da
się to zrobić)?

Sławek

być może pomocne linki:
http://svn.freepascal.org/svn/lazarus/trunk/lcl/grids.pas
http://lazarus-ccr.sourceforge.net/docs/lcl/grids/tcustomstringgrid.html
http://wiki.lazarus.freepascal.org/Grids_Reference_Page
Technical Details
Message-ID: <hqimar$2mct$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

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: [Lazarus] Klasa dziedzicząca po TCustomStringGrid
Date: Tue, 20 Apr 2010 00:41:35 +0200
Organization: Multimedia Polska SA
Lines: 44
Message-ID: <hqimar$2mct$1@news.mm.pl>
NNTP-Posting-Host: host-89-231-112-128.warszawa.mm.pl
Mime-Version: 1.0
X-Trace: news.mm.pl 1271717019 88477 89.231.112.128 (19 Apr 2010 22:43:39 GMT)
X-Complaints-To: abuse@multimedia.pl
NNTP-Posting-Date: Mon, 19 Apr 2010 22:43:39 +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
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit