Autor Beitrag
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 21.10.10 20:01 
Funktion zum Packen in den Objektinspektor:
delphi.about.com hat folgendes geschrieben:
  RegisterComponents( [ComponentClass], 'Tab name');

ACHTUNG: Vorher informieren, was das bewirkt *keine Ahnung von hat*

//Edit: verdammter LoadBalancer...haut mich raus während ich im inline-Editor wurstel. Deswegen der Doppelpost (war wohl mein Fehler nach dem Durcheinander)

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Do 21.10.10 20:10 
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
ACHTUNG: Vorher informieren, was das bewirkt *keine Ahnung von hat*
Das gehört in die Prozedur Register. Die wird beim Laden des Packages dann ausgeführt. Und da ich die Eigenschaften published gemacht habe, sind die dann auch im OI sichtbar.

Allerdings halte ich davon nicht so viel, deshalb habe ich es nicht hinzugefügt. Ich finde es sehr viel einfacher neue Komponenten einfach manuell zu erstellen. Dann kann jeder das Projekt einfach laden und kompilieren.

Ich hasse es, wenn ich für ein Projekt erst eine halbe Stunde Komponenten installieren darf... :roll:
Jakob_Ullmann
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 1747
Erhaltene Danke: 15

Win 7, *Ubuntu GNU/Linux*
*Anjuta* (C, C++, Python), Geany (Vala), Lazarus (Pascal), Eclipse (Java)
BeitragVerfasst: Do 21.10.10 20:10 
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
ACHTUNG: Vorher informieren, was das bewirkt *keine Ahnung von hat*


Das sollte der Komponentenwizard eig. automatisch erzeugen. Zumindest war das bei Delphi 7 so. Und das hat was mit der Palette, nicht mit dem OI zu tun. Was da rein soll, musst doch in published als property deklarieren.
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Do 21.10.10 20:19 
user profile iconjaenicke hat folgendes geschrieben Zum zitierten Posting springen:
Ich hasse es, wenn ich für ein Projekt erst eine halbe Stunde Komponenten installieren darf... :roll:

Absolut auch meine Meinung...nur user profile iconALF wollte wissen wie es geht ;)

user profile iconJakob_Ullmann hat folgendes geschrieben Zum zitierten Posting springen:
Und das hat was mit der Palette, nicht mit dem OI zu tun. Was da rein soll, musst doch in published als property deklarieren.

Das ist natürlich richtig, hatte mit Objekt Inspektor zusätzlich die Palette gemeint :oops:

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
ALF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Fr 22.10.10 19:55 
Ich melde mich mal kurz, das ich noch am Ball bin. Leider bin ich beruflich stark gebunden und kann alle eure Info und Meinungen noch nicht in Ruhe abarbeiten.
Richtig ist, es geht mir nur darum ob es möglich ist, eine neue Komponente zu erstellen die zwei unterschiedliche Komponenten beeinhaltet und dabei all ihre flexibilität behalten.

Habt ihr mir ja schon aufgezeigt :wink:

Leider bin ich ein Typ, der es lieber so hat, das man die neue Komponente auf die Form packen kann, um sie sich anzuschauen, dan zu sehen was ich alles mit ihr machen kann bzw was mir der OI alles für Möglichkeiten bietet.(Also sie dynamisch zu erstellen um sie dann dynamisch einzubinden ist nicht so mein ding) Dabei geht es mir auch nicht darum eine Komponente zu regestrieren, sondern sie in die Pallete mit aufzunehmen.(Wie das funktioniert ist ja bekannt) :wink:

Habt also Nachsicht, das ich noch keine Rückmeldung, wie weit ich mit euren Hinweisen gekommen bin abgeben kann.
Fragen meinerseit, werden auf alle Fälle folgen :mrgreen:

Gruss ALf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
ALF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Mo 25.10.10 15:00 
So nun habe ich meine Komponenete mal erstellt.
Buttons sind drauf, lassen sich in grösse verändern, Caption kann geschrieben werden, Font kann extra eingestellt werden!(Leider wird die Font Änderung nicht automatisch aktuallisiert sondern erst beim Schreiben von Caption bzw wenn sich an der Gauge was ändert) :cry:

Was nun wichtig währe, ist das Oncklickereignis von den Buttons. Mein Versuch:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
Btn1.OnClick:= SetBtnClick;
Btn2.OnClick:= SetBtnClick;
....
....
procedure TGaugeButton.SetBtnClick(Sender: TObject);
begin
   //if Tbutton(sender). then
   FBtnClick:= TButton(Sender).Name;
    
end;
es in etwa so umzusetzen, .... naja nix sag dazu.
Ich gehe mal davon aus was user profile iconjaenicke gesagt hat, ohne Handle keine Antwort, trifft in diesem Fall zu und ich kann es also so nicht umsetzen :cry:
Was natürlich das einfachste währe. Es sei, es hat noch jemand eine Idee!!

Gruss ALf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 25.10.10 15:29 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Leider wird die Font Änderung nicht automatisch aktuallisiert sondern erst beim Schreiben von Caption bzw wenn sich an der Gauge was ändert :cry:

Das kannst du aber von Hand machen im SetFont().

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:

Ich gehe mal davon aus was user profile iconjaenicke gesagt hat, ohne Handle keine Antwort, trifft in diesem Fall zu und ich kann es also so nicht umsetzen :cry:

Das ist deine Komponente, hier bist du Gott! "Alles" geht.

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TGaugeButton.SetBtnClick(Sender: TObject);
begin
   //if Tbutton(sender). then
   FBtnClick:= TButton(Sender).Name;      
end;


Und mit "Alles" meine ich nicht, einem Event einen String zuweisen :P

Ich versteh nicht so ganz was du willst. Ich rate mal:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
procedure TGaugeButton.SetBtnClick(Sender: TObject);
begin
   if Assigned(FBtnClick) then
     FBtnClick( Sender );      
end;

So wird der Button nach außen gereicht. DORT kannst du dann TButton(Sender).Name abfragen.

Die noble Variante ist die:
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
type TWelcherButtonWurdeGeklickt = (bcButton1WurdeGeklickt ,bcButton2WurdeGeklickt, bcBugInKomponente );
//...
procedure TGaugeButton.SetBtnClick(Sender: TObject);
begin
   if Assigned(FBtnClick) then
     begin
        if Btn1=Sender then
          FBtnClick( bcButton1WurdeGeklickt )
        else if Btn2=Sender then
          FBtnClick( bcButton2WurdeGeklickt )
        else
          FBtnClick( bcBugInKomponente)
      end;  
end;

Der Übergabeparameter von FBtnClick muss natürlich dann vom Typ TWelcherButtonWurdeGeklickt sein!

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.10.10 15:31 
Du kannst auch einfach eine Property einführen OnButton1Click oder so, deren Setter dann die Property bei Button1 setzt und deren Getter die wieder dort ausliest. ;-)
ALF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Mo 25.10.10 16:58 
mh.. der erste Vorschlag will nicht funcen. Irgenwas mache ich Falsch
ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
unit GaugeButton;

interface

uses
    SysUtils, Windows, Messages, Classes, Graphics, Controls, Forms, StdCtrls, StrUtils, Gauges;

type
   TGaugeKind = (gkHorizontalBar, gkVerticalBar);
   TGaugeButton = class(TCustomControl)

   private
       FBtnClick: TObject;
       ....
       ....
   protected
       ....
   public
       ....
       procedure SetBtnClick(Sender: TObject);
   published
       ...
end;

implementation

....
....

constructor TGaugeButton.Create (AOwner: TComponent);
begin
   inherited Create(AOwner);
   ... //<-- hier alles was für die Gauge wichtig ist
   ...
   
   FBtnFont:= TFont.Create; //<-- für die button

   Btn1:= TButton.Create(Self);
   Btn1.Parent:= Self;
   Btn1.Name:= 'Btn1';
   Btn1.OnClick:= SetBtnClick; //<-- zuweisung an die procedure
   Btn1.Font:= FBtnFont;
   ....
   ....
end;

procedure TGaugeButton.SetBtnClick(Sender: TObject);
begin
  if Assigned(FBtnClick) then
    FBtnClick:= (Sender);

end;
ich sehe zwar zur Laufzeit SetBtnClick aber auslesen wie oben gezeigt ????

Die anderen Vorschläge sind auch nicht ohne :wink: aber wenn ich das eine nicht mal packe, wie soll es bei den anderen gehen :gruebel:

Gruss ALf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Mo 25.10.10 17:21 
Ich schreibe gleich zu Hause ein Beispiel dazu...
ALF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Mo 25.10.10 17:33 
neeeee!!! alles zurück Ein grosser Denkfehler von mir
Die einzelnen buttons müssen zur Laufzeit so erkannt werden z.B.
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
TForm1.GaugeButton1Click(Sender: TObjekt);
begin
  If TGaugeButton(Sender).Name = 'ButtonGauge1' then
  begin
     if FBtnClick = ??? then
       //btn1 würde geklickt mache was
     else
       //btn2 wurde geklickt mache was anderes 
  end
  else
  If TGaugeButton(Sender).Name = 'ButtonGauge2' then
  begin
     if FBtnClick = ??? then
       //btn1 würde geklickt mache was
     else
       //btn2 wurde geklickt mache was anderes 
  end
   

end;
Alles ander hätte ja keinen Sinn und müsste sehr kompliziert ausgelesenen und verglichen werden!
Da ich ja wissen muss von welcher Gauge der zusätzlich Button geklickt wurde.

Gruss ALf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 25.10.10 18:02 
Du machst das irgendwie komisch...FBtnClick ist ja ein TObject :shock:

Wie genau kommst du denn in deinem Code in Form1 an FBtnClick?? Ist das ne globale Variable?

Guck dir am besten nochmal das Beispiel von Seite 1 von mir an:
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:

ausblenden Delphi-Quelltext
1:
type TOnBtnClickEvent= procedure (GaugeMax, GaugeMin, GaugePos: integer) of object;					


Dort kannst du natürlich statt GaugeMax usw. auch den Button angeben (als Nummer oder Boolean oder wie oben mit TWelcherButtonWurdeGeklickt )

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
ALF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Mo 25.10.10 18:25 
Irgendwie will das alles nicht.
Ich muss doch die zusätzlichen Button, in diesem Fall Btn1 + Btn2 ihr Oncklickergeignis neu zuweisen. Inerhalb meiner neuen Komponente. Die Komponente befindet sich in der Delphi Palette!
Mit dieser Zuweisung muss aber auch zur Laufzeit gearbeitet werden. Das heist, klick ich Btn1 an, muss ich als Rückmeldung die Info abfragen können aus welcher Gauge welcher zusätzliche Button geklickt wurde.
Ich bekomme aber nicht mal ne Info, ob der extra Button überhaupt geklickt wurde :gruebel:

FBtnClick ist ein Fehler, soll setBtnClick sein.

Edit: Habs geschafft :dance:
Ist vielleicht nicht die beste Lösung aber sie funct

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
public
    property BtnClick: String read FBtnClick;

procedure TGaugeButton.SetBtnClick(Sender: TObject);
begin
   if TButton(sender).Name = 'Btn1' then
      FBtnClick:= 'Btn1'
   else
     FBtnClick:= 'Btn2';

   onclick(self);
end;


Thx an alle für die Ausdauer mit mir
Gruss ALf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Mo 25.10.10 22:40 
ausblenden volle Höhe Xions Lösung Deluxe
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
type TButtonClicked = (btButton1, btButton2);

type TGaugeButtonClickEvent=procedure (Sender: TObject; Clicked: TButtonClicked) of object;

type TGaugeButton=class
//...
  private
     VOnButtonClick : TGaugeButtonClickEvent;
//...
     procedure ButtonClick(Sender: TObject);
  public
     property OnButtonClick: TGaugeButtonClickEvent read VOnButtonClick write VOnButtonCLick;
//...
end;

//...

constructor TGaugeButton.Create(...);
begin
  //...
  Btn1.OnClick:=ButtonClick;
  Btn2.OnClick:=ButtonClick;
  //...
end;

procedure TGaugeButton.ButtonClick (Sender: TObject);
begin
  if Assigned( VOnButtonClick) then
    begin
      if Sender=Btn1 then
         VOnButtonClick( Self, btButton1 ) 
      else if Sender=Btn2 then
         VOnButtonClick( Self, btButton2 );
    end;
end;

//...

ausblenden Benutzung
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
type TForm1=class
//...
   procedure GaugeButtonClick( Sender: TObject; Clicked: TButtonClicked);    

//...
GaugeButton1.OnButtonClick:= GaugeButtonClick;
GaugeButton2.OnButtonClick:= GaugeButtonClick;
//...

procedure TForm1.GaugeButtonClick (Sender: TObject; Clicked: TButtonClicked);
begin
  if Sender = GaugeButton1 then
     begin
       if Clicked=btButton1 then
         ShowMessage('Gauge1 - Button1 clicked')
       else if Clicked=btButton2 then
         ShowMessage('Gauge1 - Button2 clicked');
     end
  else if Sender = GaugeButton2 then
     begin
       if Clicked=btButton1 then
         ShowMessage('Gauge2 - Button1 clicked')
       else if Clicked=btButton2 then
         ShowMessage('Gauge2 - Button2 clicked');
     end
end;

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)

Für diesen Beitrag haben gedankt: ALF
ALF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Mo 25.10.10 23:09 
Jo, schau ich mir an!
Gibt aber dennoch ein Problem bei meiner Variante :autsch:
Vielleicht auch bei euren, weiss ich noch nicht!

Klicke ich nun einen extra Button, wird die Variable BtnClick gesetzt und das onclick von der Gauge wird aufgrufen.
Wenn ich nur auf die Gauge klicke, bleibt die Variable BtnClick bestehen, sie muss aber dann leer sein!!

Wie nun, daran hab ich nicht gedacht :autsch: was wie nun :cry:

EDIT:
@Xion, hab ich übernommen ist natürlich sauberer als meins, aber.... ganau das gleiche Problem, wenn ich nun nur auf die Gauge klicke, muss ich also das OnClick auch noch aufrufen!

Gruss ALf

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
jaenicke
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 19315
Erhaltene Danke: 1747

W11 x64 (Chrome, Edge)
Delphi 11 Pro, Oxygene, C# (VS 2022), JS/HTML, Java (NB), PHP, Lazarus
BeitragVerfasst: Di 26.10.10 05:28 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
@Xion, hab ich übernommen ist natürlich sauberer als meins, aber.... ganau das gleiche Problem, wenn ich nun nur auf die Gauge klicke, muss ich also das OnClick auch noch aufrufen
Ja, wenn du das willst, klar. Geht ja genauso.

Für diesen Beitrag haben gedankt: ALF
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Di 26.10.10 08:15 
user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:
Klicke ich nun einen extra Button, wird die Variable BtnClick gesetzt und das onclick von der Gauge wird aufgrufen.
Wenn ich nur auf die Gauge klicke, bleibt die Variable BtnClick bestehen, sie muss aber dann leer sein!!


Auch wenn mir diese Vorgehensweise seltsam vorkommt: Du könntest ja BtnClick nach dem Aufruf des Events ( onclick(self) ) wieder auf nil setzen.

user profile iconALF hat folgendes geschrieben Zum zitierten Posting springen:

EDIT:
@Xion, hab ich übernommen ist natürlich sauberer als meins, aber.... ganau das gleiche Problem, wenn ich nun nur auf die Gauge klicke, muss ich also das OnClick auch noch aufrufen!


Du weißt einfach Gauge.OnClick das gleiche Event zu und machst dann noch ein if, bei welchem du dann den letzten Parameter z.B. auf btGauge setzt. Alternativ kannst du auch für die Gauge auch ein ganz andres Event machen, welches andere Übergabeparameter hat.

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)

Für diesen Beitrag haben gedankt: ALF
ALF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Di 26.10.10 16:45 
Ok, ich hab mir mal erlaubt meine Variante einzusetzen, sagen wir mal so, bin zufrieden :wink:
Ob mann es nun so simpel machen kann, mhhh..., oder doch lieber Profesionel entzieht sich mir, da ja beides funct.
Es sei den, bei mir befinden sich unsauberer Code, der evtl das Prog oder Systhem stört oder anderes?

Hab mal nen kleines Demo und die GaugeButton.pas zum anschauen angehängt. Sollte ich da wirklich schlecht gecodet haben(GaugeButton.pas), dann werd ich selbstverständlich das abändern :mrgreen:

Anbei: Der grösste Teil kommt von der original Gauge.pas aus Delphi
Ne Info, ob ich es so lassen kann, währe nicht schlecht.

Gruss ALf
Einloggen, um Attachments anzusehen!
_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!
Xion
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
EE-Maler
Beiträge: 1952
Erhaltene Danke: 128

Windows XP
Delphi (2005, SmartInspect), SQL, Lua, Java (Eclipse), C++ (Visual Studio 2010, Qt Creator), Python (Blender), Prolog (SWIProlog), Haskell (ghci)
BeitragVerfasst: Di 26.10.10 17:23 
Also nach 15min rumwursteln läufts jetzt erstmal ;) Ich habs ja nicht installiert, musste also erst die dfm lesen und...

1. Funktioniert: ja (scheint zumindest so)

2. Wie ich schon sagte finde ich es sinnlos die Gauge (inbesondre das .Paint) neu zu programmieren...stattdessen von TGauge erben oder Gauge delegieren (d.h. als Instanz wie analog zu den Buttons).

3. Die BtnClick-property find ich immernoch...ungewöhnlich ;) Die damit verbundenen Stringvergleiche find ich aber unschön, weil die CaseSensitive sind, was heißt, du schreibst if 'btn1' ... else ... Dabei ist der ButtonName aber 'Btn1'. Passiert sehr schnell mal und man findet den Fehler nicht.

Edit:
Du hättest die "Danke" ja auch an Postings von uns machen können, die besonders konstruktiv waren :mrgreen: Besonders den Einzeiler von user profile iconjaenicke find ich da irgendwie...amüsant. :P Aber Danke fürs Danke :nut:

_________________
a broken heart is like a broken window - it'll never heal
In einem gut regierten Land ist Armut eine Schande, in einem schlecht regierten Reichtum. (Konfuzius)
ALF Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1085
Erhaltene Danke: 53

WinXP, Win7, Win10
Delphi 7 Enterprise, XE
BeitragVerfasst: Di 26.10.10 22:42 
user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
2. Wie ich schon sagte finde ich es sinnlos die Gauge (inbesondre das .Paint) neu zu programmieren...stattdessen von TGauge erben oder Gauge delegieren (d.h. als Instanz wie analog zu den Buttons).
Ja und nein. Ich finds so schöner und, ich weiss was ich gemacht habe! (lerneffekt für mich, so selten wie ich was Code)

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
3. Die BtnClick-property find ich immernoch...ungewöhnlich ;)
Weil man es so nicht macht oder weil es zu simple ist???

user profile iconXion hat folgendes geschrieben Zum zitierten Posting springen:
Die damit verbundenen Stringvergleiche find ich aber unschön, weil die CaseSensitive sind, was heißt, du schreibst if 'btn1' ... else ... Dabei ist der ButtonName aber 'Btn1'. Passiert sehr schnell mal und man findet den Fehler nicht.
Worauf soll ich aber sonst vergleichen, als auf den Komponenten.Name, den der ist nun mal einmalig. Ich weiss, der vergleich auf 'Btn1' kann immer mal daneben gehn 'btn1'! Solange man btn1 nicht noch mal für was anderes definiert :wink: Aber das sollte jeder Coder wissen! Sonst wüsst ich keine Alternative dazu!

Gruss ALf
ps gab noch danke extra

_________________
Wenn jeder alles kann oder wüsste und keiner hätt' ne Frage mehr, omg, währe dieses Forum leer!