AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein GUI-Design mit VCL / FireMonkey / Common Controls Delphi OOP-TRealEdit von TEdit abgeleitet und Fähigkeiten erweitert
Thema durchsuchen
Ansicht
Themen-Optionen

OOP-TRealEdit von TEdit abgeleitet und Fähigkeiten erweitert

Ein Thema von Hansa · begonnen am 9. Apr 2003 · letzter Beitrag vom 14. Aug 2003
Antwort Antwort
Seite 10 von 12   « Erste     8910 1112      
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#91
  Alt 25. Apr 2003, 09:44
Zitat von oki:
Hast du Zeit die ich nicht hab, oder diktierst du deinen Code in den Rechner?
Zeit hab ich auch nicht unbedingt im Übermaß, aber mit ein bisschen Routine und der IDE-Funktion "Complete class at cursor" geht das relativ flott!

Zitat:
Für so'n kleines Projekt nebenbei hast du erst mal meine Hochachtung für die Arbeit.

Ich hab mich sehr gefreut, dass du auch so'n bischen was von mir übernommen hast. Scheint also doch etwas zu taugen wenn ich was schreibe.
Dankeschön! Natürlich hab ich was von dir übernommen und wieso sollte es nicht taugen?

Zitat:
Es macht den Eindruck, als ob wir hier doch was umfangreicheres programmieren könnten. Jedenfalls sieht es so aus, als ob uns drei das hier interessiert. Wir sollten mal notieren was wir noch so alles in unserem neuen Edit haben wollen, und uns die Arbeit daran teilen. So das jeder mindestens eine eigenständige Aufgabe hat. Die Hilfe untereinander wenn einer nicht weiter kommt ergibt sich automatisch. Veröffentlichen wir den Code immer zwischendurch, do kann jeder auch unabhängig Tipps für Verbesserungen geben. Also, an solchen Kleinigkeiten wie Nachkommastellen kann ja einer eigenständig berbeiten. Da müssen bestimmt nicht drei ran. Mit so einer Teilung könnte auch ich Sachen zu Ende bringen wenn weniger Zeit zur Verfügung steht ohne immer gefrustet zu sein, weil jemand anders schneller ist.
Genau so hab ich mir das auch vorgestellt..!

Zitat:
irgentwo hab ich hier ein Problem. Ich kann die Komponente nicht installieren.

Selbst mit Hinzufügen bekomme ich die pas nicht in die Rubrik "Contains" im Package-Compiler-Faenster. Was ist das?
Hm.. keine Ahnung.. ich hab mir fürs Testen ein eigenes Package erstellt, werds mal anhängen wenn ich wieder zu Hause bin.

Zitat:
Ich habe folgendes verändert :

1. abgeleitet wird von TEdit und nicht von TDBEdit (wegen Pers.-Besitzer)
2. MaxNachKomma ist wieder eingebaut (@Motzi: wie soll man das sonst nennen?)
3. das Label ist standardmäßig links

Letzteres habe ich gemacht, weil das 80% der Fälle ausmacht und, damit man sieht, daß die Ausrichtung noch nicht stimmt.
Zu 1.: wieso? ich dachte du willst DB-Eigenschaften, deswegen hab ichs extra von TDBEdit abgeleitet... was meinst du mit Pers.-Besitzer?

Zu 2.: keine Ahnung aber es ist üblich Englische Namen zu vergeben und so ein "Pseudo-Deutscher" Name klingt nicht nur besch**** sondern wenn die Kompo veröffentlicht wird wird jemand der der deutschen Sprache nicht mächtig ist mit einer Eigenschaft namens "MaxNachkomma" nicht viel anfangen können Einfach mal nachschaun was "Nachkommastelle" auf englisch heißt...

Zu 3.: wie meinst du standardmäßig links? den letzten Satz check ich übrigens auch nicht ganz..

Zitat:
Was mir aber an dem Ding noch nicht gefällt, ist die Tatsache, daß bei mehreren dieser Komponenten, die untereinander stehen, der linke Rand zerfranst. Besser wäre es, man hätte die Option, z.B. MaxLabelLänge und würde die entsprechenden Label rechts mit blanks auffüllen, so daß das ganze bündig wird.
Wie meinen?
Manuel Pöter
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#92
  Alt 25. Apr 2003, 10:08
Delphi Personal Edition hat keinerlei Datenbank-Funktionen. Der letzte Satz ist bereits überholt, siehe mein letztes Posting. Das mit den zerfransten Labels kommt übrigens nicht durch die falsche Ausrichtung, sondern dadurch, daß die Width des Labels auf die Länge der Caption eingestellt ist.
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#93
  Alt 25. Apr 2003, 11:11
Zitat von Hansa:
Delphi Personal Edition hat keinerlei Datenbank-Funktionen.
Aja, alles klar..! Hab ich nicht bedacht.
Zitat:
Der letzte Satz ist bereits überholt, siehe mein letztes Posting. Das mit den zerfransten Labels kommt übrigens nicht durch die falsche Ausrichtung, sondern dadurch, daß die Width des Labels auf die Länge der Caption eingestellt ist.
Deswegen hab ich die Eigenschaft AutoEditSize eingeführt. Damit wird die Höhe bzw Breite des Labels (je nachdem welche Position das Label hat) automatisch auf die Höhe bzw Breite des Edits eingestellt.
Manuel Pöter
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#94
  Alt 27. Apr 2003, 16:37
hab mir das Teil jetzt mal wieder genauer angesehen. Da sind noch ein paar Fragen/Fehler aufgetaucht. Folgendes ist schlecht:

1. Wird die Caption des Labels geändert, überschreibt irgendwas die Width dieses Labels. Das nimmt dann nur die Länge ein, wie lang der Caption-String halt ist.

2. Word-Wrap geht auch nicht. Hängt wahrscheinlich mit 1. zusammen.

jetzt noch ein paar Fragen (@Motzi):

1. warum verwendest Du bei den Set... Prozeduren const-Parameter?
2. SetLabelPos wird sehr oft aufgerufen, warum?
und last but not least: muß das forward deklariert werden?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#95
  Alt 27. Apr 2003, 18:09
Zitat von Hansa:
hab mir das Teil jetzt mal wieder genauer angesehen. Da sind noch ein paar Fragen/Fehler aufgetaucht. Folgendes ist schlecht:

1. Wird die Caption des Labels geändert, überschreibt irgendwas die Width dieses Labels. Das nimmt dann nur die Länge ein, wie lang der Caption-String halt ist.

2. Word-Wrap geht auch nicht. Hängt wahrscheinlich mit 1. zusammen.
Mal schaun...

Zitat:
jetzt noch ein paar Fragen (@Motzi):

1. warum verwendest Du bei den Set... Prozeduren const-Parameter?
2. SetLabelPos wird sehr oft aufgerufen, warum?
und last but not least: muß das forward deklariert werden?
Zu 1.: Die Set-Methoden hab ich über die "Complete class at cursor" Funktion erstellt, wurden also von Delphi selbst so erstellt. Soweit ich sind const-Parameter schneller, da das intern irgendwie mit Pointern geregelt wird.

Zu 2.: SetLabelPos wird immer dann aufgerufen wenn die Möglichkeit besteht, dass die Labelposition/größe geändert wurde. Wenn zb AutoSize auf True ist und die Schriftart verändert wird, dann wird die Größe des Labels an die neue Schrift angepasst. Daher wird beim setzen der Font im Nachhinein auch SetLabelPos aufgerufen, damit auf eine eventuelle Positions-/Größenänderung reagiert wird.
Manuel Pöter
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#96
  Alt 28. Apr 2003, 09:14
Hi Motzi,

erstaunlicherweise läßt sich die Komponente heute ohne jegliches zutun meinerseitz problemlos installieren. Egal was es war, hauptsache es funzt.

Das mit der Labelgröße nach Caption-Änderung ist doch ganz klar auf die Eigenschaft AutoSize des Labels zurückzuführen. Jetzt muß nur noch eingearbeitet werden, dass bei Setzen der Eigenschaft auf False die Größenzuordnung des Edit übernommen wird.

Gruß oki
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#97
  Alt 28. Apr 2003, 09:24
Hi Leute,

ich hab das mal schnell geändert mit der Größe des Labels in Bezug auf die Eigenschaft AutoSize.

Hier währe die Frage ob die Größenänderung des Weite des Labels bei rechts- und linksbündiger Ausrichtung gewünscht ist. Gleiche Frage kann man für die Höhe bei Ausrichtung lpTop und lpBottom stellen. Macht mal einen Vorschlag und ich würde das gerne einarbeiten.

Gruß oki
Angehängte Dateien
Dateityp: pas labeledrealedit_180.pas (12,6 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#98
  Alt 28. Apr 2003, 09:43
Zitat von oki:
Das mit der Labelgröße nach Caption-Änderung ist doch ganz klar auf die Eigenschaft AutoSize des Labels zurückzuführen. Jetzt muß nur noch eingearbeitet werden, dass bei Setzen der Eigenschaft auf False die Größenzuordnung des Edit übernommen wird.
Naja.. ich hab mir gedacht der User kann selbst die Größe des Labels bestimmen und AutoSize auf False setzen, damit das Label diese Größe behält. Für den Fall, dass er will dass das Label immer genauso groß ist wie das Edit hab ich die Eigenschaft AutoEditSize eingeführt. Damit wird die Größe des Labels immer auf die Größe des Edits angepasst.
Manuel Pöter
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#99
  Alt 28. Apr 2003, 11:51
Hi Motzi,

das mit AutoEditSize hab ich auf die Schnelle übersehen.Ich hab den Behandlungscode dorthin verschoben.

Die Frage währe jetzt ob wir noch mal explizit auf Labelhöhe und -Breite in Bezug auf Labelposition reagieren.

Gruß oki
Angehängte Dateien
Dateityp: pas labeledrealedit_710.pas (12,6 KB, 10x aufgerufen)
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#100
  Alt 29. Apr 2003, 20:50
Hi,

das Thema geht noch weiter, auch wenn es nur wenige interessiert. Ich habe hier einen Code, den ich aus weltweiten Bestandteilen zusammengestückelt habe. Ich finde, der Code ist sehr einfach, aber effizient.

Dabei geht es allerdings um eine ListBox mit Label:

Delphi-Quellcode:
unit labeledlistbox;

interface

uses Controls, stdctrls, ExtCtrls, Classes;

procedure Register;

implementation

type

  TMyListBox = Class( TCustomPanel )
  private
    FLabel: TLabel;
    FListBox: TListBox;
    procedure SetLabelCaption(const Value: String);
    function GetLabelCaption: String;
    function GetListBoxItems: TStrings;
    function GetListBoxItemIndex: Integer;
    function GetListBoxOnClick: TNotifyEvent;
    procedure SetListBoxItemIndex(const Value: Integer);
    procedure SetListBoxOnCLick(const Value: TNotifyEvent);
  public
    constructor Create( AOwner: TComponent ); override;
    destructor Destroy; override;
  published
    property Font;
    property LabelCaption: String read GetLabelCaption write SetLabelCaption;
    property ListBoxItems: TStrings read GetListBoxItems;
    property ListBoxItemIndex: Integer read GetListBoxItemIndex write SetListBoxItemIndex;
    property ListBoxOnClick: TNotifyEvent read GetListBoxOnClick write SetListBoxOnCLick;
  end;

  constructor TMyListBox.Create(AOwner: TComponent);
  begin
    inherited Create( AOwner );

    FLabel := TLabel.Create( Self );
    FLabel.Parent := Self;
    FLabel.Align := alTop;
    FLabel.Caption := 'LABEL_CAPTION';

    FListBox := TListBox.Create( Self );
    FListBox.PArent := Self;
    FListBox.Align := alClient;
  end;

  destructor TMyListBox.Destroy;
  begin
    FLabel.Free;
    FListBox.Free;

    inherited Destroy;
  end;

  function TMyListBox.GetLabelCaption: String;
  begin
    Result := FLabel.Caption;
  end;

  function TMyListBox.GetListBoxItemIndex: Integer;
  begin
    Result := FListBox.ItemIndex;
  end;

  function TMyListBox.GetListBoxItems: TStrings;
  begin
    Result := FListBox.Items;
  end;

  function TMyListBox.GetListBoxOnClick: TNotifyEvent;
  begin
    Result := FListBox.OnClick;
  end;

  procedure TMyListBox.SetLabelCaption(const Value: String);
  begin
    if FLabel.Caption <> Value then
    begin
      FLabel.Caption := Value;
      Invalidate;
    end;
  end;

  procedure TMyListBox.SetListBoxItemIndex(const Value: Integer);
  begin
    if FListBox.ItemIndex <> Value then
    begin
      FListBox.ItemIndex := Value;
      Invalidate;
    end;
  end;

  procedure TMyListBox.SetListBoxOnCLick(const Value: TNotifyEvent);
  begin
    FListBox.OnClick := Value;
  end;

procedure Register;
begin
  RegisterComponents('Additional', [TMyListBox]);
end;

end.
[edit=Daniel B]Delphi-Tags ergänzt. MfG Daniel B.[/edit]
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 10 von 12   « Erste     8910 1112      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:56 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