Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi teilmenge als parameter für überladene createfunktion (https://www.delphipraxis.net/94350-teilmenge-als-parameter-fuer-ueberladene-createfunktion.html)

stephan007 20. Jun 2007 11:45


teilmenge als parameter für überladene createfunktion
 
hallo!
habe hier in diesem thread (Überschriebene Create) mein problem schon etwas näher erläutert. ich will als parameter einer überladenen create mitteilen, welche darstellungsform mein fenster haben soll. da dies allerdings ein (Teil-)Menge aus drei möglichen Panels (mit beliebiger Kombination) sein kann habe ich den tipp bekommen, das so zu lösen:

Delphi-Quellcode:
type
  TMyModes = (mmListView,mmProgressBar,mmTotalProgress);
  TMyMode = set of TMyModes;
end;
nun ist mir schon klar, dass ich als neuen parameter den TMyMode übergeben muss, aber wie sieht ein aufruf der funktion
Delphi-Quellcode:
Create (AOwner : TComponent; Mode : TMyMode);
aus, zum Testen und wie muss ich in der Create das dann verarbeiten bzw. kann es abfragen, damit ich die richtigen aktionen setze?

könnte mir bitte jemand die aufruf bzw. case bedingung für sagen wir mmListView und mmProgressBar gemeinsam (also dass beide angezeigt werden) angeben. hab bisher noch nie was mit einem set einer enum gemacht und hab daher (leider) keine ahnung, wie der aufruf für sowas und die abfrage aussieht.

also bitte wenn möglich folgende codefragmente vervollständigen
Delphi-Quellcode:
Create (self, {TMyMode hier her, aber wie?});
......

case {TMyModetyp} : begin dosomething; end;
danke!

stephan.

DeddyH 20. Jun 2007 11:52

Re: teilmenge als parameter für überladene createfunktion
 
Hallo,
mir leuchtet nicht ganz ein, wieso Du die Property (soll ja eine sein, oder?) unbedingt mit Gewalt in den Konstruktor quetschen möchtest. Was spricht denn generell dagegen, sie als öffentliche Property zu deklarieren und eine Ereignismethode bei Änderung zu schreiben?

DeddyH 20. Jun 2007 11:59

Re: teilmenge als parameter für überladene createfunktion
 
Hier zur Verdeutlichung mal eine (uralte und unspektakuläre) Komponente von mir, die Ollis Flat-Style-Buttons imitiert. Da arbeite ich auch mit einem Set (TEdgetypes). Schau' s Dir einfach mal an. Download

stephan007 20. Jun 2007 12:01

Re: teilmenge als parameter für überladene createfunktion
 
dieses fenster soll sich auch von jedem anderen programm aus mittels create (...) aufrufen und erstellen lassen.
d.h. ich muss ermöglichen, dass in einem anderen programm mein progress fenster mit beliebigen einstellungen aufrufbar ist.
deshalb auch die überladene create, damit ichs mitgeben kann.

oder wie würdest du das sonst realisieren?
wie gesagt, ich bin ein newbe und versuche gerade das zu realisieren.

was das fenster genau macht, steht eh im anderen thread, wenn du mir mittels code zeigen könntest, wie ich das ganze sinnvoller aber mit gleicher funktionalität realisieren kann, dann würdest du mir da sehr helfen.

denn wie gesagt, ich hätte es zur not (als newbe eben) mittels 7 enums gemacht.

oki 20. Jun 2007 12:02

Re: teilmenge als parameter für überladene createfunktion
 
Hi,

also erst mal würde ich den Mengentyp mit TMyModes bezeichnen und den Typ mit TmyMode. Dann den Konstruktor und die Property auf Typ TMyModes ändern, da jetz Set.

Zuweisung über eckige Klammern mit allen benötigten Modetypen durch Komma getrennt.
Delphi-Quellcode:
type
  TMyMode = (mmListView,mmProgressBar,mmTotalProgress);
  TMyModes = set of TMyModes;
end

var MyModes : TMyModes;

  MyModes := [mmListView, mmProgrssBar];
Prüfung dann mit in-Operator.

Gruß oki

stephan007 20. Jun 2007 12:29

Re: teilmenge als parameter für überladene createfunktion
 
danke, funkt genauso, wie ich mirs gewünscht habe.
ist nur oft schwer als newbe das alles schnell und vorallem wen möglich gleich zu behirnen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:24 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