Einzelnen Beitrag anzeigen

Teekeks

Registriert seit: 19. Okt 2008
Ort: Dresden
765 Beiträge
 
FreePascal / Lazarus
 
#1

CursorPosition im Edit festlegen schlägt fehl...

  Alt 23. Mai 2009, 22:22
Hallo!
Ich habe wiedereinmal ein Problem.
Ich würde gerne das mein Cursor in einem Edit wieder an eine bestimmte stelle im Text springt.
SelStart funktioniert nicht, da bei meiner Lazarus-Version man anscheinend noch keine Position setzen kann.
Ich hab bis jetzt folgendes:
Delphi-Quellcode:
procedure TMyDatumEdit.MyOwnKeyDown(var Key: Word);
begin
  // Zahlen 0..9:
  if (Key>=$30) and (Key<=$39) then exit
  else
  // Zahlen 0..9 auf dem Nummpat:
  if (Key>=$60) and (Key<=$69) then exit
  else
  // Enter:
  if (Key=$0D) then exit
  else
  // Clear-Taste:
  if (Key=$0C) then exit
  else
  // Tab:
  if (Key=$09) then exit
  else
  // Page-Down:
  if (Key=$28) then exit
  else
  // Esc:
  if (Key=$1B) then exit
  else
  // F1..F16:
  if (Key>=$70) and (Key<=$7F) then exit
  else
  // Backspace:
  if (Key=$08) then exit
  else
  // Dezimalpunkt:
  if (Key=$6C) then exit
  else
  // Pfeil Links und Rechts:
  if (Key=$25) or (Key=$27) then exit
  else
  // Tastendruck zurücksetzen:
    Key:=$00;
end;

procedure TMyDatumEdit.KeyDown(var Key: Word; Shift: TShiftState);
begin
  MyOwnKeyDown(Key);
  DeleteChar(Key);
  inherited KeyDown(Key, Shift);
end;

procedure TMyDatumEdit.KeyUp(var Key: Word; Shift: TShiftState);
var tmp:integer;
    amsg:TLMKey;
begin
  inherited KeyUp(Key, Shift);
  if (Text[3]<>'.')then
  begin
    Text:=UTF8Copy(Text,1,2)+'.'+Text[3]+UTF8Copy(Text,5,5);
// Hier würde ich gerne Den Cursor um 5 Zeichen zurücksetzen.
// Meine lösung funktioniert nicht. (Result=false)
    amsg.CharCode:=$25;
    for tmp:=10 downto 5 do
      Showmessage(booltostr(DoKeyPress(amsg))+' '+char(amsg.CharCode));
  end;
end;

procedure TMyDatumEdit.DeleteChar(Var Key:Word);
begin
  if (Length(Text)=10) and (Key<>$00) and (Key<>$0D) and (Key<>$08) then
  begin
    // Überschreibmodus Simulieren:
    if (SelLength = 0) then
    SelLength:=1;
  end;
end;
Wisst ihr wie ich da ranngehen soll?

gruß Teekeks
Peter
"Div by zero Error" oder auch: "Es geht auch ohne Signatur!".
  Mit Zitat antworten Zitat