Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Kompon. StringGrid, Zellen für verschied. Typen mit overload (https://www.delphipraxis.net/80748-kompon-stringgrid-zellen-fuer-verschied-typen-mit-overload.html)

EccoBravo 14. Nov 2006 16:47


Kompon. StringGrid, Zellen für verschied. Typen mit overload
 
Hallo,

wer hat sich nicht schon mal darüber geärgert, daß sein Quellcode durch Typenwandlung für I/O in ein StringGrid oder TEdit unnötig lang wird?

Ich will mir aus TEdit und TStringGrid neue Komponenten erzeugen, die ihren Daten I/O
(TEdit.Text, TStringGrid.Cells[i,j]..) nicht nur über den Typ "String" ausüben
sondern auch mit "Integer" oder "Single" mit verschiedenen Rundungen machen.
Dieses will ich mittels Methoden Overload machen.

Bei TEdit glaube ich das auch zu verstehen.
Wie ist es aber mit TStringGrid, der Daten I/O ist ja zellselektiv und soll es auch bleiben.
Ich müßte ja eine Methode "2. Ordnung" überladen?

Weiß jemand wie das geht?

Danke,

E. B.

PS:
Will schnell noch ergänzen:
ich will den Datenaustausch über
TEdit.Text --> String, Single, Integer..
und über
TStringGrid.Cells[i,j] --> String, Single, Integer..


also über die schon bekannten Methoden.

Danke nochmals

shmia 14. Nov 2006 17:36

Re: Kompon. StringGrid, Zellen für verschied. Typen mit over
 
Zitat:

Zitat von EccoBravo
wer hat sich nicht schon mal darüber geärgert, daß sein Quellcode durch Typenwandlung für I/O in ein StringGrid oder TEdit unnötig lang wird?

Ich will mir aus TEdit und TStringGrid neue Komponenten erzeugen, die ihren Daten I/O
(TEdit.Text, TStringGrid.Cells[i,j]..) nicht nur über den Typ "String" ausüben
sondern auch mit "Integer" oder "Single" mit verschiedenen Rundungen machen.
Dieses will ich mittels Methoden Overload machen.

Ich glaube nicht, dass diese Vorgehensweise so viel bringt.
Ich würde die Controls so lassen wie sie sind und stattdessen eine Brücke bauen.
so als Anregung:
Delphi-Quellcode:
TStringGridAdapter = class(TComponent)
   ....
   property StringGrid:TStringGrid;
   property CellsAsInteger[x,y:integer]:integer;
   property CellsAsDatetime[x,y:integer]:TDatetime;
   ...
end;
Um dieser Adapter zu benützen ist später etwas mehr Aufwand nötig, als wenn du TStringGrid direkt ableiten würdest.
Aber die Vorteile (funktioniert mit TStringGrid und allem was davon abgeleitet ist) wiegen diese kleine Unannehmlichkeit auf.

EccoBravo 14. Nov 2006 17:40

Re: Kompon. StringGrid, Zellen für verschied. Typen mit over
 
Hallo und Danke,

ich bin ja für alles offen, Brücke.. das habe ich irgend wo schon mal gehört, und zwar bei Entwurfsmustern, was ist eigentlich unter solch einer Brücke zu verstehen ?
Und warum geht das andere Überladen eigentlich nicht ?

Danke und Grüße
E. B.

shmia 14. Nov 2006 18:00

Re: Kompon. StringGrid, Zellen für verschied. Typen mit over
 
Zitat:

Zitat von EccoBravo
ich bin ja für alles offen, Brücke.. das habe ich irgend wo schon mal gehört, und zwar bei Entwurfsmustern, was ist eigentlich unter solch einer Brücke zu verstehen ?
Und warum geht das andere Überladen eigentlich nicht ?

Properties dürfen ja auch Parameter haben; dass sind dann Array-Properties wie z.B. TStringGrid.Cells[].
Überladen wäre nur dann möglich, wenn sich die Parameter in Anzahl und/oder Datentyp unterscheiden würden.
Im folgenden Beispiel kann der Compiler nicht entscheiden, welche Variante zu verwenden ist.
Delphi-Quellcode:
property Cells[x,Y:integer]:string; overload;
property Cells[x,Y:integer]:Integer; overload; // nicht erlaubt
property Cells[s:string]:integer; overload; // das wäre denkbar, aber wohl nicht sinnvoll

EccoBravo 14. Nov 2006 18:05

Re: Kompon. StringGrid, Zellen für verschied. Typen mit over
 
Das habe ich mir beinahe gedacht,
Da finde ich die Brückenlösung schon besser.

Aber nun noch die dumme Frage, was eigentlich das Brückenmuster ist und darstellt?

Grüße

E. B.

shmia 14. Nov 2006 18:14

Re: Kompon. StringGrid, Zellen für verschied. Typen mit over
 
Zitat:

Zitat von EccoBravo
Aber nun noch die dumme Frage, was eigentlich das Brückenmuster ist und darstellt?

Brücke und Adapter sind zwei verschiedene Dinge (aber frag mich jetzt nicht nach dem Unterschied :zwinker: )
Das skizzierte Hilfsobjekt ist wohl ein Adapter.
Schau mal auf: http://www.dotnetpro.de/articles/fre...-Interface.pdf (106k)
vielleicht bringt das etwas Klarheit.


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:22 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz