Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Zwei Fragen zu Komponentenentwicklung (https://www.delphipraxis.net/47271-zwei-fragen-zu-komponentenentwicklung.html)

xaromz 8. Jun 2005 20:24

Re: Zwei Fragen zu Komponentenentwicklung
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,

ich muss mich korrigieren, TComponent hat kein Parent, das gibt's erst bei TControl :oops: .
Zitat:

Zitat von DGL-luke
wie greif ich dann darauf zu, und wie zwinge ich den progger, dass er ein canvas als parent nimmt?
oder soll ich schauen, ob das parent ein canvas hat?

Auf welchen Canvas möchtest Du zeichnen?
Da Du von TComponent ableitest, hat Deine Komponente keinen Canvas und keine Paint-Mathode zum Überschreiben.
Du solltest also von TGraphicControl ableiten, da hast Du einen Canvas und eine Paint-Methode.
Ich hab mal Dein Zeug etwas überarbeitet, fehlt aber noch Werteüberprüfung.

@Hansa: Natürlich erkennt der OI ein TColor, wenn die Eigenschaft als Published deklariert ist.

Gruß
xaromz

DGL-luke 8. Jun 2005 20:32

Re: Zwei Fragen zu Komponentenentwicklung
 
@xaromz: der clou des ganzen ist ja, dass die komponente sich nicht selbst zeichnet, sondern auf das parent-canvas gezeichnet wird.

den code werd ich mir aber morgen erst zu gemüte führen.

@Hansa: es käme mir wirklich extrem dumm vor, wenn der OI nicht wüsste, wohin er die werte schreiben soll, wenn ich ihm sowohl read als auch write definiert habe.

jfheins 8. Jun 2005 20:40

Re: Zwei Fragen zu Komponentenentwicklung
 
Zitat:

Zitat von DGL-luke
@xaromz: der clou des ganzen ist ja, dass die komponente sich nicht selbst zeichnet, sondern auf das parent-canvas gezeichnet wird.

Du wirst es nicht glauben, aber afaik ist das auch so, wenn du überhaupt nichs machst :mrgreen:

(Nur muss es halt nicht mit Canvas passieren, sondern kann auch etwas effizienter sein ;) )

Hansa 8. Jun 2005 21:15

Re: Zwei Fragen zu Komponentenentwicklung
 
Zitat:

Zitat von xaromz
@Hansa: Natürlich erkennt der OI ein TColor, wenn die Eigenschaft als Published deklariert ist.

Das brauchst du mir nicht zu sagen. Allerdings halte ich nicht viel von fertigen Lösungen. 8) Das ist nicht gut und hält manchen nur davon ab, sich selber was beizubringen, obwohl Defizite offensichtlich und auch genügend Hinweise da sind. Wo kommen wir denn hin, wenn jeder, der einem anderen helfen will, dem Fragesteller, der was lernen will, komplett die Arbeit abnimmt ? :roll:

xaromz 8. Jun 2005 22:32

Re: Zwei Fragen zu Komponentenentwicklung
 
Hallo,

Zitat:

Zitat von Hansa
Allerdings halte ich nicht viel von fertigen Lösungen. 8) Das ist nicht gut und hält manchen nur davon ab, sich selber was beizubringen, obwohl Defizite offensichtlich und auch genügend Hinweise da sind. Wo kommen wir denn hin, wenn jeder, der einem anderen helfen will, dem Fragesteller, der was lernen will, komplett die Arbeit abnimmt ? :roll:

ich will ja hier niemandem die Arbeit abnehmen; ich denke aber, wenn man zeigt, wie es besser geht (ohne jetzt komplette Lösungen zu präsentieren), kann man schon eine Menge lernen. Auch ich habe, wie viele andere sicher auch, einen großen Teil meines Wissens erworben, indem ich mir fertige Lösungen angeschaut und analysiert habe. Wer meine Überarbeitung mit dem oben Geposteten vergleicht und die Unterschiede untersucht, wird vielleicht was lernen, und wenn er was nicht versteht, kann er ja fragen. Wie Du schon erkannt hast, gibt es hier einige Defizite, und ich kann ja nicht alles auf einmal erklären. Also soll er sich meine Version anschauen und dann gezielte Fragen stellen. Ich denke, das bringt mehr.

Zitat:

Zitat von DGL-luke
der clou des ganzen ist ja, dass die komponente sich nicht selbst zeichnet, sondern auf das parent-canvas gezeichnet wird.

Wozu ist eine graphische Komponente gut, wenn Sie nicht auf eine eigene Zeichenoberfläche zugreifen kann? :gruebel: Außer etwas Ressourcenschonung fällt mir da kein Grund ein. Insbesondere bei einer Progressbar scheint mir das etwas sinnlos.

Gruß
xaromz

DGL-luke 9. Jun 2005 15:23

Re: Zwei Fragen zu Komponentenentwicklung
 
@Ressourcen: ich verweise mal auf den thread http://www.delphipraxis.net/internal...ct.php?t=54673 , wo sich jemand über meine ressourcenfressenden 128 RBProgressbars beschwert hatte:

Zitat:

Zitat von Velgreyer
Nur so als Tipp: Benutz Canvas und zeichne eine komplette Oberfläche mit der Auswertung, und nicht 127 Progressbars. Ich seh ja immer wie sich das ganze aufbaut wenn ich das Fenster in den Vordergrund nehme :shock:

Und das hier wollte ich eben als lösung des ganzen ausprobieren.

@Hansa: Du meinst also, wenn ich schon (Deiner meinung nach) absoluter Noob bin, darf man mir nicht wohlmeinend ein beispiel zeigen?
(Mir fällt auch sonst öfters auf, dass zu, sagen wir mal, ziemlich extreme Meinungen äusserst. vielleicht solltest du dir überlegen, ob du deinen ton nicht manchmal etwas mäßigen willst. Denn ein noob wie ich wird von so etwas wie "das behaupten einige andere auch und scheitern erbärmlich." eher abgeschreckt als wermutigtm, sich richtig reinzuhängen.)
Und ausserdem, wenn ich mich schon nicht von der meinung "wenn ich eine property mit read und write zugriff habe, kann der OI immer darauf zugreifen" abbringen lasse, hilft doch eigentlich nur noh quelltext, der das gegenteil beweist. Fakten fakten fakten! :mrgreen:

jetz schau ich mir aber erstmal den anhang von xaromz an.

EDIT: ich sehe, das ist jetzt von TGraphicControl abgeleitet. muss das denn sein? und auf welches canvas zeichnet es denn jetzt?

Hansa 9. Jun 2005 17:03

Re: Zwei Fragen zu Komponentenentwicklung
 
Zitat:

Zitat von Hansa
Zitat:

Zitat von DGL-luke
TColor ist TColor. Und der OI soll das dann gefälligst nach meinen einstellungen anpassen.

könnte es sein, daß sich die "Position" einstellen läßt ? Wenn dem so ist, dann gucke dir mal alles damit zusammenhängende neu an. Auch in dem Tuto.

Das war ein Top-Hinweis, ohne für dich die ganze Arbeit zu machen. Völlig ausreichend um weiterzukommen. :!: Mit Verweis auf vorhandenen Source. Wenn du allerdings fertigen Source haben willst, dann sage das doch gleich vorher und beschwere dich nicht noch über Leute, die dir geholfen haben. 8)

P.S.: ehe ichs vergesse : die Frage wurde gestellt, ohne eine einzige Zeile Code dazu zu liefern ! Als Antwort erwartest du aber kompletten Code ? :shock:

xaromz 9. Jun 2005 17:44

Re: Zwei Fragen zu Komponentenentwicklung
 
Hallo,

Zitat:

Zitat von DGL-luke
@Ressourcen: ich verweise mal auf den thread http://www.delphipraxis.net/internal...ct.php?t=54673 , wo sich jemand über meine ressourcenfressenden 128 RBProgressbars beschwert hatte:

Zitat:

Zitat von Velgreyer
Nur so als Tipp: Benutz Canvas und zeichne eine komplette Oberfläche mit der Auswertung, und nicht 127 Progressbars. Ich seh ja immer wie sich das ganze aufbaut wenn ich das Fenster in den Vordergrund nehme :shock:

Und das hier wollte ich eben als lösung des ganzen ausprobieren.

Jetzt kann ich das Ganze auch einordnen. Schneller wird der Bildaufbau mit meiner Lösung wohl nicht. Allerdings stellt sich die Frage, warum man das unbedingt beschleunigen muss, ich hab da schon schlimmeres gesehen. Die paar Millisekunden sollten egal sein.
Als Möglichkeit für Deine Bedürfnisse wäre evtl. eine Komponente (wieder von TGraphicControl) geeignet, die alle Werte aufnehmen und auf einmal anzeigen kann. Für das bisschen Zeitgewinn wäre das aber Overkill.

Zitat:

Zitat von DGL-luke
EDIT: ich sehe, das ist jetzt von TGraphicControl abgeleitet. muss das denn sein? und auf welches canvas zeichnet es denn jetzt?

Mit TGraphicControl hat die Komponente ihren eigenen Canvas. Sie malt quasi auf sich selbst.

Gruß
xaromz

DGL-luke 10. Jun 2005 21:07

Re: Zwei Fragen zu Komponentenentwicklung
 
ja so hatt ich mir das gedacht. werde das ganze dann bei gelegenheit(hoffentlich noch dieses we) fertig proggen.

Hansa: Ein "top tip"? Du wirfst mir den brocken "position" hin, mit verweis auf ein tutorial, und das soll dann ein "top tip" sein? nein danke. im übrigen hab ich nie fertigen code verlangt, sondern zwei grundsätzliche, allgemeine und fast schon abstrakte fragen gestellt:

- wie lasse ich das paint-ereignis automatisch auslösen? Antwort: Paint überschreiben, fertig.
- wie bringe ich es so hin, dass ich die werte im OI einstellen kann? Antwort: ein wenig rumgedruckse, ein bisschen äusserst hinterfotzige ironie(war es ironie? so etwas sieht man in einem forum leider verdammt schlecht), aber sonst kaum etwas. nimm bitte nochmal alleine hierzu stellung:

"wenn ich eine property deklariere und mit read and write zugriff versehe, wie setze ich dann standardwerte? ich hatte das bis jetzt im konstruktor, wo es ja eigentlich auch hingehört, das scheint aber das, was ich im OI setze, zu überschreiben?"

mag sein, dass das im tutorial steht, aufgrund eines kleinen missgeschickes meinerseits(ja ich gebs ja zu) hab ich das aber nicht gelesen, obwohl ich selbiges vermeinte. ich werde es jetzt lesen, und vielleicht weiss ich dann schon weiter. ich würde es aber schon gerne noch sehen, dass du eine 1. eindeutige 2. anständige 3. hilfreiche antwort darauf zustande bringst. ansonsten würde es sich bei mir bestätigen, dass du gerne die anderen user ein wenig verarschst und oft postest ohne wirklich nachzudenken was genau du da postest.

([/@hansa])

EDIT: entweder bin ich schon zu müde, oder in dem tut steht wirklich nicht, wie ich standardwerte mache...

phlux 11. Jun 2005 10:24

Re: Zwei Fragen zu Komponentenentwicklung
 
Standartwerte setzt du in dem du sie im Constructor überschreibst. Angenommen du hast eine selbst erstellte property Namens Padding, dann sieht der Code für die Compo so aus:

Delphi-Quellcode:

unit MyControl;

interface

uses
  Windows, SysUtils, Classes, Controls, Messages, Graphics;

type
  TMyControl= class(TCustomControl)
  private
    { Private-Deklarationen }
    fPadding: Integer;
  protected
    { Protected-Deklarationen }
    //procedure Paint; override;
  public
    { Public-Deklarationen }
    constructor Create(aOwner: TComponent); override;
    destructor Destroy; override;
  published
    { Published-Deklarationen }
    property Padding: Integer read fPadding write fPadding;
    // Vererbte Properties
    property Align;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Standard', [TMyControl]);
end;

constructor TMyControl.Create(aOwner: TComponent);
begin
  inherited Create(aOwner);
  fPadding := 5; //Hier wird der Inhalt der Variable geändert
  Align := alLeft;  //Properties die du nicht selbst erstellt(vererbt) hast
                     //kannst du wie üblich ändern
end;

destructor TMyControl.Destroy;
begin
  inherited Destroy;
  fBackground.Free;
end;


(*
procedure TMyControl.Paint;
begin
  inherited Paint;
end;*)

end.


Alle Zeitangaben in WEZ +1. Es ist jetzt 00:28 Uhr.
Seite 2 von 3     12 3      

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