🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.pascal
11 messages
11 total messages Started by Terrmit Fri, 31 Oct 2008 12:08
[Lazarus] zdarzenie rodzica - pomocy!
#92681
Author: Terrmit
Date: Fri, 31 Oct 2008 12:08
28 lines
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!
#92682
Author: darekm
Date: Fri, 31 Oct 2008 17:30
23 lines
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!
#92683
Author: Andrzej Grażyński
Date: Fri, 31 Oct 2008 18:33
24 lines
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!
#92684
Author: darekm
Date: Fri, 31 Oct 2008 20:24
12 lines
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!
#92685
Author: Terrmit
Date: Tue, 04 Nov 2008 14:54
17 lines
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!
#92686
Author: Terrmit
Date: Tue, 04 Nov 2008 19:21
25 lines
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!
#92687
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 05 Nov 2008 03:39
24 lines
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!
#92688
Author: Terrmit
Date: Wed, 05 Nov 2008 08:06
27 lines
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!
#92689
Author: Łukasz 'Maly' Ostrowski
Date: Wed, 05 Nov 2008 15:11
44 lines
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!
#92690
Author: Terrmit
Date: Wed, 05 Nov 2008 22:40
39 lines
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!
#92691
Author: Łukasz 'Maly' Ostrowski
Date: Thu, 06 Nov 2008 08:17
18 lines
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