Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   FreePascal (https://www.delphipraxis.net/74-freepascal/)
-   -   CursorPosition im Edit festlegen schlägt fehl... (https://www.delphipraxis.net/134515-cursorposition-im-edit-festlegen-schlaegt-fehl.html)

Teekeks 23. Mai 2009 21:22


CursorPosition im Edit festlegen schlägt fehl...
 
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

Teekeks 24. Mai 2009 09:21

Re: CursorPosition im Edit festlegen schlägt fehl...
 
Hat keiner eine Idee?

quendolineDD 24. Mai 2009 09:35

Re: CursorPosition im Edit festlegen schlägt fehl...
 
Du könntest die Funktionen MSDN-Library durchsuchenClipCursor und MSDN-Library durchsuchenSetCursorPos nutzen.

Teekeks 24. Mai 2009 09:39

Re: CursorPosition im Edit festlegen schlägt fehl...
 
Ok.
Ich glaube ich hatte mich falsch ausgedrückt:
Ich meinte die cared-Position und nicht die Cursor-Position( Dieser blinkende String in einem Editfeld)

toms 24. Mai 2009 09:50

Re: CursorPosition im Edit festlegen schlägt fehl...
 
Lazarus Version, OS?

Teekeks 25. Mai 2009 05:17

Re: CursorPosition im Edit festlegen schlägt fehl...
 
Linux, Suse9.1; Lazarus 0.9.24 Beta

Teekeks 26. Mai 2009 15:38

Re: CursorPosition im Edit festlegen schlägt fehl...
 
*push* Hat keiner ´ne Idee?


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:57 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz