Thread View: pl.comp.lang.pascal
11 messages
11 total messages
Started by Terrmit
Fri, 31 Oct 2008 12:08
[Lazarus] zdarzenie rodzica - pomocy!
Author: Terrmit
Date: Fri, 31 Oct 2008 12:08
Date: Fri, 31 Oct 2008 12:08
28 lines
1562 bytes
1562 bytes
Witam,
Może tym razem ktoś mi pomoże.
Zrobiłem komponent dziedziczący z TStringGrid.
Potrzebuję wykryć moment dodania kolumny
realizowany za pomocą MyStringGrid.Columns.Add.
Pokryłem zdarzenie OnColRowInserted:
procedure TMyStringGrid.ColRowInserted(IsColumn: boolean; index: integer);
var i: Integer;
begin
inherited ColRowInserted(IsColumn, index);
ShowMessage('ColRowInserted, index='+IntToStr(index));
end;
ale to nic nie daje, ponieważ Columns.Add wywołuje
OnColRowInserted z klasy rodzica, a nie z mojej.
ShowMessage nie pojawia się. Co robię źle?
Jak to zrobić, żeby wykryć to zdarzenie z klasy
rodzica? Kombinuję z tym już jak "koń pod górę"
niestety bez rezultatu. Google też nie pomagają :/
Ma ktoś jakiś pomysł (lub wiedzę :D )?
Jeśli tak, to proszę się nimi podzielić :)
Sławek Załęcki
Re: [Lazarus] zdarzenie rodzica - pomocy!
Author: darekm
Date: Fri, 31 Oct 2008 17:30
Date: Fri, 31 Oct 2008 17:30
23 lines
1537 bytes
1537 bytes
Terrmit pisze: > Witam, > Może tym razem ktoś mi pomoże. > > Zrobiłem komponent dziedziczący z TStringGrid. > Potrzebuję wykryć moment dodania kolumny > realizowany za pomocą MyStringGrid.Columns.Add. > Pokryłem zdarzenie OnColRowInserted: > > procedure TMyStringGrid.ColRowInserted(IsColumn: boolean; index: integer); --------------------------------------------------------^^>overload; dopisz overload na końcu deklaracji procedury procedure ColRowInserted(IsColumn: boolean; index: integer);overload; -- Darek
Re: [Lazarus] zdarzenie rodzica - pomocy!
Author: Andrzej Grażyński
Date: Fri, 31 Oct 2008 18:33
Date: Fri, 31 Oct 2008 18:33
24 lines
1543 bytes
1543 bytes
darekm pisze: > Terrmit pisze: >> Witam, >> Może tym razem ktoś mi pomoże. >> >> Zrobiłem komponent dziedziczący z TStringGrid. >> Potrzebuję wykryć moment dodania kolumny >> realizowany za pomocą MyStringGrid.Columns.Add. >> Pokryłem zdarzenie OnColRowInserted: >> >> procedure TMyStringGrid.ColRowInserted(IsColumn: boolean; index: >> integer); > > > --------------------------------------------------------^^>overload; > dopisz overload na końcu deklaracji procedury > > procedure ColRowInserted(IsColumn: boolean; index: integer);overload; > > > > > A może "override", nie "overload"?
Re: [Lazarus] zdarzenie rodzica - pomocy!
Author: darekm
Date: Fri, 31 Oct 2008 20:24
Date: Fri, 31 Oct 2008 20:24
12 lines
1148 bytes
1148 bytes
>> procedure ColRowInserted(IsColumn: boolean; index: integer);overload; >> >> >> >> >> > A może "override", nie "overload"? oczywiście, przejęzyczenie, sorry -- Darek
Re: [Lazarus] zdarzenie rodzica - pomocy!
Author: Terrmit
Date: Tue, 04 Nov 2008 14:54
Date: Tue, 04 Nov 2008 14:54
17 lines
1297 bytes
1297 bytes
darekm pisze: >>> procedure ColRowInserted(IsColumn: boolean; index: integer);overload; >>> >>> >>> >>> >>> >> A może "override", nie "overload"? > oczywiście, przejęzyczenie, sorry > > Tak się składa, że mam tam override. Nie zapomniałem o nim. procedure ColRowInserted(IsColumn: boolean; index: integer); override; Niestety w tym przypadku to nic nie daje. Sławek
Re: [Lazarus] zdarzenie rodzica - pomocy!
Author: Terrmit
Date: Tue, 04 Nov 2008 19:21
Date: Tue, 04 Nov 2008 19:21
25 lines
1429 bytes
1429 bytes
darekm pisze: >>> procedure ColRowInserted(IsColumn: boolean; index: integer);overload; >>> >>> >>> >>> >>> >> A może "override", nie "overload"? > oczywiście, przejęzyczenie, sorry > > Zmieniłem dziedziczenie z klasy TStringGrid na klasę TCustomStringGrid type TMyStringGrid = class(TCustomStringGrid) żeby było "bardziej prawidłowo", ale to też nie pomogło i dalej moje ColRowInserted nie wykonuje się. override jak już wcześniej pisałem miałem dopisane w deklaracji. Sławek
Re: [Lazarus] zdarzenie rodzica - pomocy!
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 05 Nov 2008 03:39
Date: Wed, 05 Nov 2008 03:39
24 lines
1730 bytes
1730 bytes
Terrmit wrote: > Zmieniłem dziedziczenie z klasy TStringGrid > na klasę TCustomStringGrid > > type > TMyStringGrid = class(TCustomStringGrid) > > żeby było "bardziej prawidłowo", ale to też nie pomogło > i dalej moje ColRowInserted nie wykonuje się. > > override jak już wcześniej pisałem miałem dopisane > w deklaracji. Nic dziwnego, z nudów zajrzałem co i jak z tym eventem. I z tego co pobieżnie przejrzałem w źródłach lcl, Columns.Add ani Rows.Add nie dokonują żadnych powiadomień, tylko ColRowInsert(bool, int) to robi z tego co widzę. -- Pozdrawiam, Łukasz 'Maly' Ostrowski. http://maly.nemo.pl/
Re: [Lazarus] zdarzenie rodzica - pomocy!
Author: Terrmit
Date: Wed, 05 Nov 2008 08:06
Date: Wed, 05 Nov 2008 08:06
27 lines
1922 bytes
1922 bytes
Łukasz 'Maly' Ostrowski pisze: > Terrmit wrote: >> Zmieniłem dziedziczenie z klasy TStringGrid >> na klasę TCustomStringGrid >> >> type >> TMyStringGrid = class(TCustomStringGrid) >> >> żeby było "bardziej prawidłowo", ale to też nie pomogło >> i dalej moje ColRowInserted nie wykonuje się. >> >> override jak już wcześniej pisałem miałem dopisane >> w deklaracji. > > > Nic dziwnego, z nudów zajrzałem co i jak z tym eventem. > > I z tego co pobieżnie przejrzałem w źródłach lcl, > Columns.Add ani Rows.Add nie dokonują żadnych powiadomień, > tylko ColRowInsert(bool, int) to robi z tego co widzę. > Właśnie miałem dzisiaj przejrzeć dokładniej źródła. To wygląda na niedopatrzenie. Może zgłoszę to jako usterkę, bo w końcu dodawanie wiersza, czy kolumny, to nic innego jak wstawianie, tyle że na końcu tabeli. Sławek
Re: [Lazarus] zdarzenie rodzica - pomocy!
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 05 Nov 2008 15:11
Date: Wed, 05 Nov 2008 15:11
44 lines
2394 bytes
2394 bytes
Terrmit wrote: > Właśnie miałem dzisiaj przejrzeć dokładniej źródła. > To wygląda na niedopatrzenie. Może zgłoszę to jako usterkę, > bo w końcu dodawanie wiersza, czy kolumny, to nic innego > jak wstawianie, tyle że na końcu tabeli. W Delphi nie ma nawet takiego Eventa/Callbacka, więc to nie jest niedopatrzenie. To jest behaviour by design, albo nawet ficzer który jest niekompletnie sprawny ;), zamiast gmerać na Columns/Rows(które musiałyby mieć zaimplementowane powiadomienia, czego nie maja i czego nie będzie im się chciało dopisać ;)) - używaj ColRowInsert(bool, int) - będziesz miał powiadomienie. Albo wrapnij sobie: procedure AddRow(); begin ColRowInsert(false, Rows.Count); end; procedure AddColumn(); begin ColRowInsert(true, Columns.Count); end; ;). I w ramach rozluznienia, ah Ci multi-lingwiści z ekipy Lazarusa: Grids.pas:1420 function PointIgual(const P1,P2: TPoint): Boolean; begin result:=(P1.X=P2.X)and(P1.Y=P2.Y); end; Nietrudo zgadnąc co autor miał na myśli ;). Przynajmniej symbol jest unused ;). -- Pozdrawiam, Łukasz 'Maly' Ostrowski. http://maly.nemo.pl/
Re: [Lazarus] zdarzenie rodzica - pomocy!
Author: Terrmit
Date: Wed, 05 Nov 2008 22:40
Date: Wed, 05 Nov 2008 22:40
39 lines
2428 bytes
2428 bytes
Łukasz 'Maly' Ostrowski pisze: > Terrmit wrote: >> Właśnie miałem dzisiaj przejrzeć dokładniej źródła. >> To wygląda na niedopatrzenie. Może zgłoszę to jako usterkę, >> bo w końcu dodawanie wiersza, czy kolumny, to nic innego >> jak wstawianie, tyle że na końcu tabeli. > > > W Delphi nie ma nawet takiego Eventa/Callbacka, więc to nie > jest niedopatrzenie. To jest behaviour by design, albo nawet > ficzer który jest niekompletnie sprawny ;), zamiast > gmerać na Columns/Rows(które musiałyby mieć zaimplementowane > powiadomienia, czego nie maja i czego nie będzie im się > chciało dopisać ;)) - używaj ColRowInsert(bool, int) - będziesz > miał powiadomienie. Albo wrapnij sobie: > > procedure AddRow(); > begin > ColRowInsert(false, Rows.Count); > end; > > procedure AddColumn(); > begin > ColRowInsert(true, Columns.Count); > end; > > ;). > To nie zupełnie o to chodzi. Ja potrzebuję użyć procedury TMyStringGrid.Columns.Add, lub TMyStringGrid.Columns.Insert. W obu przypadkach nie jest wywoływane zdarzenie TMyStringGrid.ColRowInserted Gdy wywołuję ColRowInsert(true, index) zdarzenie występuje, ale przecież przy Columns.Add i Columns.Insert także zmienia się ColCount grida! Za późno dzisiaj wróciłem do domu i nie mam już czasu analizować źródełek, idę spać. Może jutro mi się uda. Sławek
Re: [Lazarus] zdarzenie rodzica - pomocy!
Author: Łukasz 'Maly' Ostrowski
Date: Thu, 06 Nov 2008 08:17
Date: Thu, 06 Nov 2008 08:17
18 lines
1839 bytes
1839 bytes
Terrmit wrote: > To nie zupełnie o to chodzi. Ja potrzebuję użyć > procedury TMyStringGrid.Columns.Add, lub > TMyStringGrid.Columns.Insert. W obu przypadkach > nie jest wywoływane zdarzenie TMyStringGrid.ColRowInserted > Gdy wywołuję ColRowInsert(true, index) zdarzenie > występuje, ale przecież przy Columns.Add i Columns.Insert > także zmienia się ColCount grida! > Za późno dzisiaj wróciłem do domu i nie mam już czasu > analizować źródełek, idę spać. Może jutro mi się uda. Ze standardowym zachowaniem grida, zapomnij ;). -- Pozdrawiam, Łukasz 'Maly' Ostrowski. http://maly.nemo.pl/
Thread Navigation
This is a paginated view of messages in the thread with full content displayed inline.
Messages are displayed in chronological order, with the original post highlighted in green.
Use pagination controls to navigate through all messages in large threads.
Back to All Threads