Einzelnen Beitrag anzeigen

Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#9
  Alt 11. Apr 2003, 10:34
Hi Daniel B,

sonst brauche ich hier wohl niemanden zu begrüßen. Das KeyPress mußte noch etwas geändert werden. da müssen natürlich noch . und , rein, sonst ginge nur integer. Dann wurde das OnlyReals nicht berücksichtigt, die Abfrage ob true oder false muß da auch noch rein.

Dann habe ich noch taRightJustify in den Constructor CreateParams eingebaut. Da das Vorfahrobjekt TEdit ist, ist dies standardmäßig von Delphi auf "linksbündig" gesetzt. Der Grund ist einfach nur Faulheit, damit man nicht jedesmal im OI das umändern muß. Jetzt ist zwar alles schön rechtsbündig, aber die Methode ist zu hart. Man kann nun nicht mehr taCenter oder taLeftjustify einstellen. Das muß irgendwo anders rein, bloß wo?

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

procedure TRealEdit.KeyPress(var Key:Char);
begin
  inherited KeyPress(Key);
  if OnlyReals then begin
    if not (Key in ['0'..'9','.',',',#8]) then
      Key := #0;
  end;
end;
Noch ein Schönheitsfehler : Das Dezimalzeichen (im Moment kann . oder , verwendet werden) kann man eingeben sooft man will. D.h. da müßte noch ein Exception-Handler eventuelle Fehler abfangen. Besser wäre es, sobald ein '.' oder ',' eingegeben wird, eine zweite zu blockieren. Dabei spielt dann auch noch Backspace eine Rolle. wird das einzige DecChar gelöscht sollte man es wieder eingeben können.
Gruß
Hansa
  Mit Zitat antworten Zitat