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 4 von 12   « Erste     234 56     Letzte »    
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#31
  Alt 14. Apr 2003, 12:44
hier der Fehler
Angehängte Dateien
Dateityp: doc dok7.doc (23,0 KB, 11x aufgerufen)
Gruß
Hansa
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#32
  Alt 14. Apr 2003, 14:20
Ich habe eine Vermutung. Die stelle ich mal so in den Raum : Bei einem TLabeledEdit ist das Label eher ein Panel, als ein Label. Könnte das sein ?
Gruß
Hansa
  Mit Zitat antworten Zitat
Benutzerbild von Motzi
Motzi

Registriert seit: 6. Aug 2002
Ort: Wien
598 Beiträge
 
Delphi XE2 Professional
 
#33
  Alt 14. Apr 2003, 14:35
Zitat von Hansa:
Ich habe eine Vermutung. Die stelle ich mal so in den Raum : Bei einem TLabeledEdit ist das Label eher ein Panel, als ein Label. Könnte das sein ?
Hm.. glaub ich eigentlich nicht... aber ich kann momentan nur Vermutungen anstellen, da ich auf meinem Zivi-Arbeitsplatz sitz. Hab erst wieder zu Hause ein Delphi zur Verfügung.
Manuel Pöter
  Mit Zitat antworten Zitat
Benutzerbild von nailor
nailor

Registriert seit: 12. Dez 2002
Ort: Karlsruhe
1.989 Beiträge
 
#34
  Alt 14. Apr 2003, 16:21
Zitat von Hansa:
Zitat von Nailor:
...aber jetzt ist der Moment gekommen...noch jemand ein SpinEdit so umbastelt, dass es damit arbeitet...
Anscheinend bist Du tatsächlich der erste, der das Original-Orakel in Delphi gefunden hat. Welcher Moment ist wozu gekommen? Und womit soll ein SpinEdit arbeiten ? Was soll das überhaupt sein ?
Welches Original-Orakel? Der Moment, in dem ein SpinEdit mit rechtsbündigen Zahlen praktisch wäre, ist gekommen. Sollte die zweite Frage beantworten. Ich hätte gerne die SpinEdit-Komponente aus der Samples-Abteilung mit dem Text nicht links, sondern rechts!
Michael N.
http://nailor.devzero.de/code/sharpmath/testing/ --- Tests, Feedback, Anregungen, ... aller Art sehr willkommen!
::: don't try so hard - it'll happen for a reason :::
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#35
  Alt 15. Apr 2003, 15:12
Dann kupfere doch mein RealEdit ab und erweitere das Spinedit. So wie ich das mit dem TEdit gemacht habe. Du brauchst sogar nur das fAlignment und die zugehörigen Funktionen einzubauen. Alles andere am besten rausschmeißen. Der Thread hier müßte eigentlich ein gute Vorlage sein. Ich habe doch den ganzen Quelltext sogar als Anhang mitgeschickt. Und glaube Daniel B sogar das fertige Package. 8)
Gruß
Hansa
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#36
  Alt 15. Apr 2003, 17:18
Hi Hansa,

ich würde mal gern mit reinschauen. Wo finde ich den aktuellen Code?

Gruß oki
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#37
  Alt 16. Apr 2003, 13:33
Ich habe den Tausenderpunkt hinbekommen, werde ihn aber nicht benutzen. Und zwar aus einem trivialen Grund: Der Punkt muß ja durch die Zahl "hüpfen". Und das ist einfach nur irritierend. Deweiteren muß der DecimalSeparator auch noch berücksichtigt werden. An diesem Punkt hab ich dann aufgehört. die exe hängt hier dran. Wer den Source braucht, soll sich melden. Ich will in dem Thread hier nicht zu viel durcheinander bringen.
Angehängte Dateien
Dateityp: exe project1_654.exe (500,5 KB, 5x aufgerufen)
Gruß
Hansa
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#38
  Alt 16. Apr 2003, 13:46
hier ist noch der momentane Code (das Label will einfach noch nicht) :

Code:
Unit RealEdit;

interface

uses
  Windows, Messages, SysUtils,
  Variants, Classes, Graphics,
  Controls, Forms, Dialogs, StdCtrls,ExtCtrls;

procedure Register;

type
  TRealEdit = class(TCustomEdit)
  private
    fAlignment:TAlignment;
    fOnlyReals:boolean;
    fLabel:TLabel;
    procedure SetAlignment(Value:TAlignment);
    procedure SetOnlyReals(Value:boolean);
  protected
    procedure SetLabel(Value:TLabel);
    procedure CreateParams(var Params:TCreateParams); override;
    procedure KeyPress(var Key:Char); override;
  public
    constructor Create(AOwner: TComponent); override;
    destructor destroy; override;
  published
    property Alignment: TAlignment read fAlignment write SetAlignment;
    property OnlyReals: Boolean read fOnlyReals write SetOnlyReals;
    property RealLabel: TLabel read fLabel write SetLabel;
  end;

implementation

procedure TRealEdit.SetLabel (Value : TLabel);
  begin
   fLabel := value;
   flabel.SetSubComponent(true);
  end;

constructor TRealEdit.Create(AOwner: TComponent);
begin
  inherited;
  FAlignment := taRightJustify;
  OnlyReals := true;
  FLabel := TLabel.Create(AOwner);
//  FLabel.Parent := AOwner;
  FLabel.Name := 'RealLabel';
  FLabel.SetSubComponent(true);
  FLabel.Caption := 'CAPTION';
end;

destructor TRealEdit.Destroy;
  begin
    FLabel.Destroy;
    inherited;
  end;

procedure TRealEdit.CreateParams(var Params: TCreateParams);
const Alignments: array[TAlignment] of byte=(ES_Left, ES_Right, ES_Center);
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style or Alignments[fAlignment];
  fAlignMent := taRightJustify;
end;

procedure TRealEdit.KeyPress(var Key:Char);
var ZulZeichen : SET OF char;
begin
  inherited KeyPress(Key);
  if OnlyReals then begin
    ZulZeichen := ['0'..'9',#8];
    if pos (DecimalSeparator,text) = 0 THEN // kein . im RealEdit.text . zulassen
      ZulZeichen := ZulZeichen + [DecimalSeparator]
    else
      ZulZeichen := ZulZeichen - [DecimalSeparator]; // zweiten . verhindern
    if not (Key in ZulZeichen) then
      Key := #0;
  end;
end;

procedure TRealEdit.SetAlignment (value:TAlignment);
begin
  fAlignment:=value;
  RecreateWnd;
end;

procedure TRealEdit.SetOnlyReals (value:boolean);
begin
  fOnlyReals:=value;
  RecreateWnd;
end;

procedure Register;
begin
  RegisterComponents('Eigene', [TRealEdit]);
end;

end.
Gruß
Hansa
  Mit Zitat antworten Zitat
oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#39
  Alt 16. Apr 2003, 13:56
Hi Hansa,

ich hab mir die pas angeschaut. Da sind mir ein par Fragen gekommen. (ich würde die gerne mal erörtern, wobei es nicht darum geht, dass ich damit recht habe)

Deine Methode KeyPress.

Du rufst inherited KeyPress(Key) am Anfang auf und bearbeitest dann nachträglich den Wert im Edit.

Warum nicht prüfen, verändern und dann mit keypress über inherited weiterverarbeiten lassen? so nach dem Motto:

Delphi-Quellcode:

procedure TRealEdit.KeyPress(var Key:Char);
var ZulZeichen : SET OF char;
    Old Key : Char;
begin
  if OnlyReals then begin
    ZulZeichen := ['0'..'9',#8];
    IF not (Key in ZulZeichen) then begin
      Key := #0;
      Exit;
    end;
    OldKey := Key;
    IF (pos (DecimalSeparator,text) = 0) and Length(Text) = 3 then begin
      Key := '.';
      Inherited KeyPress(Key);
    end;
    inherited keypress(OldKey);
  end;
end;
Also, ist jetzt nicht grad sehr elegant (OldKey ist Quatsch, würde '.' direkt reinschreiben) aber im Prinzip nach der Art.

Außerdem ist der Dezimalseperator nicht der Punkt als Tausendertrennzeichen sondern das Komma; dächte ich.

Gruß oki
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#40
  Alt 16. Apr 2003, 17:40
Lese nicht den Kommentar, sondern die Source :

Code:
ZulZeichen := ZulZeichen + [DecimalSeparator]
Das dürfte wohl genügen. Und dann lese noch den Beitrag von vorhin, der Tausenderseperator interessiert im Moment nicht, es geht nur noch um das Label.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 4 von 12   « Erste     234 56     Letzte »    


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 18:58 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