🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Thread View: pl.comp.lang.delphi
6 messages
6 total messages Started by ExM Tue, 17 Apr 2018 08:10
Czy konieczne przeciążenie?
#346558
Author: ExM
Date: Tue, 17 Apr 2018 08:10
12 lines
1880 bytes
Mam taką zagwozdkę - czy to można zrobić prościej.
Mam (dla przykładu) procedurę która np. zmienia położenie różnych obiektów:

procedure Przesun(Left, Top: Integer; var Obiekt: TButton); overload;
procedure Przesun(Left, Top: Integer; var Obiekt: TEdit); overload;

Obie te procedury robią to samo - tzn.zmieniają ten sam odziedziczony parametr: Top i Left tylko na obiektach różnego typu.

Czy można zrobić jedną procedurę która obsłuży oba typy obiektów na raz?
Teoretycznie przekazując parametr "Obiekt" mógłbym go rzutować - ale to też jakoś mi się nie podoba :)

ExM
Re: Czy konieczne przeciążenie?
#346559
Author: Piotr S.
Date: Tue, 17 Apr 2018 09:41
18 lines
1605 bytes
W dniu 2018-04-17 o 10:10, ExM pisze:
> Mam taką zagwozdkę - czy to można zrobić prościej.
> Mam (dla przykładu) procedurę która np. zmienia położenie różnych obiektów:
> 
> procedure Przesun(Left, Top: Integer; var Obiekt: TButton); overload;
> procedure Przesun(Left, Top: Integer; var Obiekt: TEdit); overload;
> 
> Obie te procedury robią to samo - tzn.zmieniają ten sam odziedziczony parametr: Top i Left tylko na obiektach różnego typu.
> 
> Czy można zrobić jedną procedurę która obsłuży oba typy obiektów na raz?
> Teoretycznie przekazując parametr "Obiekt" mógłbym go rzutować - ale to też jakoś mi się nie podoba :)
> 
> ExM
> 

Generyki

P.S.
Re: Czy konieczne przeciążenie?
#346560
Author: Tomek D
Date: Tue, 17 Apr 2018 12:21
28 lines
1837 bytes
W dniu 17.04.2018 o 11:41, Piotr S. pisze:
> W dniu 2018-04-17 o 10:10, ExM pisze:
>> Mam taką zagwozdkę - czy to można zrobić prościej. Mam (dla
>> przykładu) procedurę która np. zmienia położenie różnych obiektów:
>> 
>> procedure Przesun(Left, Top: Integer; var Obiekt: TButton);
>> overload; procedure Przesun(Left, Top: Integer; var Obiekt: TEdit);
>> overload;
>> 
>> Obie te procedury robią to samo - tzn.zmieniają ten sam
>> odziedziczony parametr: Top i Left tylko na obiektach różnego
>> typu.
>> 
>> Czy można zrobić jedną procedurę która obsłuży oba typy obiektów na
>> raz? Teoretycznie przekazując parametr "Obiekt" mógłbym go rzutować
>> - ale to też jakoś mi się nie podoba :)
>> 
>> ExM
>> 
> 
> Generyki

Z armaty do wróbla....
procedure Przesun(Left, Top: Integer; var Obiekt: TControl);

TButton i TEdit dziedziczą z TControl;

Tomek D.
Re: Czy konieczne przeciążenie?
#346561
Author: Piotr S.
Date: Tue, 17 Apr 2018 12:24
13 lines
1244 bytes
W dniu 2018-04-17 o 14:21, Tomek D pisze:
> 
> Z armaty do wróbla....
> procedure Przesun(Left, Top: Integer; var Obiekt: TControl);
> 
> TButton i TEdit dziedziczą z TControl;
> 
> Tomek D.

Dla tego przykładu tak. Co innego jak nie będą dziedziczyć ze wspólnej 
klasy.

P.S.
Re: Czy konieczne przeciążenie?
#346562
Author: Roman Tyczka
Date: Tue, 17 Apr 2018 17:32
16 lines
1416 bytes
On Tue, 17 Apr 2018 11:41:35 +0200, Piotr S. wrote:

>> procedure Przesun(Left, Top: Integer; var Obiekt: TButton); overload;
>> procedure Przesun(Left, Top: Integer; var Obiekt: TEdit); overload;
>> 
>> Czy można zrobić jedną procedurę która obsłuży oba typy obiektów na raz?
>> Teoretycznie przekazując parametr "Obiekt" mógłbym go rzutować - ale to też jakoś mi się nie podoba :)
>> 
> 
> Generyki

A jak byś to rozwiązał generykami?

-- 
pozdrawiam
Roman Tyczka
Re: Czy konieczne przeciążenie?
#346563
Author: Marek
Date: Wed, 18 Apr 2018 06:46
12 lines
1278 bytes
W dniu 2018-04-17 o 10:10, ExM pisze:
> Mam taką zagwozdkę - czy to można zrobić prościej.
> Mam (dla przykładu) procedurę która np. zmienia położenie różnych obiektów:
>
> procedure Przesun(Left, Top: Integer; var Obiekt: TButton); overload;
> procedure Przesun(Left, Top: Integer; var Obiekt: TEdit); overload;

A "var" to po co?

-- 
Pzdr.
Marek
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