Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   TTimer und Edits ? (https://www.delphipraxis.net/85345-ttimer-und-edits.html)

Tommy1988 29. Jan 2007 16:09


TTimer und Edits ?
 
Hallo, ich hätte gerne, dass Text den ich in ein Editfeld eingebem, nach einer egbstimmten zeit automatisch da (wo der cursor gerade ist) hingeschrieben/eingefügt wird.. wenn ihr versteht wie ich das meine..

nur leider finde ich ÜBERHAUPT nix zu Timer bzw. TTimer.

wie lässt sich das realisieren?

Text aus Edits ins Clipboard schreiben, und nach der ttimerzeit wieder ausgeben? das wäre denk ich möglich aber lästig da der text im clipboard wäre..

SirThornberry 29. Jan 2007 16:22

Re: TTimer und Edits ?
 
das liegt daran das der Timer recht simpel ist. Wenn du Enabled auf True setzt wird im eingestellten Intervall die Methode aufgerufen welche bei OnTimer zugewiesen ist. Mehr macht der Timer nicht. Und was du dann eben in diesem Intervall immer wieder machst ist nicht mehr Sache des Timers

Tommy1988 29. Jan 2007 16:25

Re: TTimer und Edits ?
 
mhh wenn du mir schon soviel sagst:

wie man einen mausklick simuliert weis ich.. ich würde das so hinkriefgen wie ich es mir vorstelle nur an einem hapert es..

der text soll aus dem edit oder dem memo ganz egal.. dort hingeschrieben werden wo sich der cursor befindet..

SirThornberry 29. Jan 2007 16:53

Re: TTimer und Edits ?
 
das ist dann Edit bzw. Memospezifisch. Beim Edit und Memo sollte es das Property SelStart sein.

Tommy1988 29. Jan 2007 16:56

Re: TTimer und Edits ?
 
nunja.. so kann ich recht wenig damit anfangen. vielleicht eni kleines codebeispiel?

edit:

habe hier was gefuden weis aber nicht obs korrekt ist (sieht für mich jedenfalls richtig aus)

Delphi-Quellcode:
procedure TForm1.Memo1KeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState);
begin
Edit1.Text := IntToStr(Memo1.SelStart);
end;

procedure TForm1.Memo1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
Edit1.Text := IntToStr(Memo1.SelStart);
end;

SirThornberry 29. Jan 2007 16:59

Re: TTimer und Edits ?
 
mit SelStart bekommst du die aktuelle Cursorposition im Edit. Wie man einen String (Edit.Text) mit "copy" etc. manipuliert findet sich über die Suchfunktion und in der Hilfe.

Tommy1988 29. Jan 2007 17:05

Re: TTimer und Edits ?
 
also meine frage ist einfach:

wie bekomme ich den text aus dem edit nach X-Sekunden dort hin wo sich der cursor gerade befindet (da wo der cursor sein soll ist NICHT im programm !)

edit:

Delphi-Quellcode:
Memo1.SelText:='neuer Text';
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.SelLength:=0;
  Memo1.SelText:='Text einfügen';
end;
dieser code fügt "neuer Text" zwar ein.. aber nicht da wo ich es will.. es soll nicht in ein memo oder edit geschrieben werden sondern dort hin wo sich der cursor befinden (außerhalb meines programms)..

Tommy1988 29. Jan 2007 17:43

Re: TTimer und Edits ?
 
ich habe jetzt was von wegen

Delphi-Quellcode:
SendMessage(hedit,WM_PAST,0,0);
gelesen aber wo ist in dem ding bitteschön mein edit definiert ?

da wird der kram vom clipboard kopiert soviel weis ich

SirThornberry 29. Jan 2007 17:46

Re: TTimer und Edits ?
 
hEdit vielleicht?! (Handle des Edits) Aber wie bereits erwähnt gibt es zur Stringmanipulation schon jede Menge.

Tommy1988 29. Jan 2007 17:54

Re: TTimer und Edits ?
 
und bei mir auch.. wie erwähnt, eijn BEISPIEL wäre nicht schlecht da ich mich mit sowas noch nicht lange beschäftige und im tut sowas nicht finden kann

DP-Maintenance 29. Jan 2007 18:52

DP-Maintenance
 
Dieses Thema wurde von "MrSpock" von "Programmieren allgemein" nach "VCL / WinForms / Controls" verschoben.
TTimer gehört zur VCL.

dominikkv 29. Jan 2007 20:00

Re: TTimer und Edits ?
 
so wie ich das verstanden habe willst du irgendwo ausserhalb deines programmes (zB auf dem desktop) einen text ausgeben.
vllt kannst du ne 2te form erstellen, die hintergrungdfarbe auf durchsichtig stellen (wenn das geht), ränder entfernen, so das nur noch das label darauf sichtbar ist... ka :nerd:

bitsetter 29. Jan 2007 20:14

Re: TTimer und Edits ?
 
Hier hast du ein simples Beispiel:
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  Timer1.Enabled:= false;
end;

procedure TForm1.Button1Click(Sender: TObject);
begin
  Memo1.SelStart:= 0;//oder manuell selektieren
  Memo1.SelLength:= 3;//oder manuell selektieren
  Timer1.Enabled:= true;
end;

procedure TForm1.Timer1Timer(Sender: TObject);
var
  MousePos: TPoint;
begin
  Timer1.Enabled:= false;
  GetCursorpos(MousePos);
  SendMessage(Memo1.Handle, WM_COPY, 0, 0);
  SendMessage(WindowFromPoint(MousePos), WM_PASTE, 0, 0);
end;

Tommy1988 29. Jan 2007 20:27

Re: TTimer und Edits ?
 
@dominikkv

du hast es leider falsch verstanden.

ob das beispiel vom User danach richtig ist, werde ich jetzt testen und dann meinen beitrag editieren

Tommy1988 29. Jan 2007 20:37

Re: TTimer und Edits ?
 
das geht soweit aber erst nachdem ich hier aus false true gemacht habe:

Delphi-Quellcode:
  Timer1.Enabled := true;
  GetCursorpos(MousePos);
  SendMessage(Memo1.Handle, WM_COPY, 0, 0);
  SendMessage(WindowFromPoint(MousePos), WM_PASTE, 0, 0);
jetzt muss ich mir nurnoch zusammendenken wie ich eingaben aus einem memo zeilenweise auslesen usw.. und die timerzeit über ein edit steuern kann

Tommy1988 31. Jan 2007 11:16

Re: TTimer und Edits ?
 
kann mir denn zumindest einer sagen, wie ich das interval des timers über ein editfeld steuern kann?

bitsetter 31. Jan 2007 12:59

Re: TTimer und Edits ?
 
Delphi-Quellcode:
Timer1.Interval:= StrToInt(Edit1.Text);

himitsu 31. Jan 2007 13:23

Re: TTimer und Edits ?
 
StrToInt wird aber mit einer Exception um sich werfen, wenn es keine gültige Zahl vorfindet.
Du solltest also entweder diese Exception behandeln, oder auf alternative Funktionen (z.B. [oh]StrToIntDef[/of]) ausweichen, welche keine Exceptionen erzeugen.

PS: eine Kontrolle der eingegebenen Werte wäre auch nicht schlecht ... negative und zugroße Zahlen würden eventuell einige nicht gweollte Auswirkungen zeigen.


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:34 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