![]() |
Unsichtbares Leerzeichen
Liste der Anhänge anzeigen (Anzahl: 1)
Guten Abend!
Habe mich hier heute angemeldet, nachdem ich ungefähr 32.00 mal auf euren Forenseiten gelandet bin. Jetzt habe ich allerdings ein kleines Problem, für dass ich noch keine Lösung gefunden habe :o . Ist aber wirklich nur ganz klein. Und zwar wollte ich ein kleines bisschen Zeit sparen, indem ich eine Eingabe, die ich in mehreren Programmen brauchte, in ein eigenes Programm schreibe, welches diese direkt in die Zwischenablage kopiert. (Ich weiß eigentlich spar ich mir dadurch nur Wort markieren, strg+c, aber wo ein Wille ist, ist ein Hindernis :-D .) Also eben das Programm geschrieben. Hat alles geklappt. Dann hab ich noch eben hinzugefügt, dass das "Haupt-Edit" geleert wird, wenn man strg+return drückt. Und da kam das kleine Problem. Und zwar fügte sich immer ein "unsichtbares Leerzeichen" als erstes Zeichen in das Editfeld ein, wenn man zuvor strg+Return benutzt hat. Das Programm mit Quellcode häng ich an. Sichtbar wird das "unsichtbare Leerzeichen" in OpenOffice Calculator. In anderen Programmen ist es vorhanden, aber halt nicht sichtbar. Hab aber nicht soo viele Programme ausprobiert. Man sieht meinen Versuch (trim), hat nicht geklappt. Auch dem Edit eine leere String zuzuweisen macht keinen Sinn. Zum Testen: Programm starten, strg+return, neue eingabe, anderes Programm öffnen, strg+v :wink: Achso und für alle nichtregistrierten Leser:
Delphi-Quellcode:
procedure TForm1.Timer1Timer(Sender: TObject);
begin Form1.Height := 53; Edit1.Left := 0; Edit1.Top := 0; Edit1.Width := Form1.Width; end; procedure TForm1.Edit1Change(Sender: TObject); begin if Edit1.Text <> '' then clipboard.AsText := trim(Edit1.Text); end; procedure TForm1.FormCreate(Sender: TObject); begin Form1.Height := 53; Edit1.Left := 0; Edit1.Top := 0; Edit1.Width := Form1.Width; end; procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = 17 then strgpress := true; if (key = 8) and (strgpress) then edit1.text := ''; end; procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word; Shift: TShiftState); begin if key = 17 then strgpress := false; end; |
Re: Unsichtbares Leerzeichen
Zitat:
zunächst sollte man die definierten Konstanten benutzen (VK_BACK) und die gedrückte Strg-Taste aus Shift auslesen. Ausserdem wird die Eingabe Ctrl-BS ausgewertet, das gedrückte Zeichen wird aber zur Verarbeitung an Formular oder Edit weitergegeben. Wenn man eine Taste selbst verarbeitet, sollte man Key = 0 setzen, damit nicht aufgrund des Tastendrucks noch irgendwas anderes passiert. Also etwa so:
Delphi-Quellcode:
[/quote]
procedure TForm1.FormKeyDown(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if (key = VK_BACK) and (ssCtrl in Shift) then begin edit1.text := ''; Key := 0; end; end; |
Re: Unsichtbares Leerzeichen
und sicherheitshalber eventuell noch ein
Delphi-Quellcode:
hinterher, nicht daß noch etwas passiert, wenn man die Taste wieder losläßt.
procedure TForm1.FormKeyUp(Sender: TObject; var Key: Word;
Shift: TShiftState); begin if (key = VK_BACK) and (ssCtrl in Shift) then Key := 0; end; |
Re: Unsichtbares Leerzeichen
Okay hab ich probiert. Brachte zwar beim Ausführen keine Veränderung, aber immerhin, der Code ist schöner :-D.
Habe mal ein bisschen ausprobiert. Es liegt an OpenOffice. Dieses nimmt wohl nicht so gerne fremde, unsichtbare Leerzeichen an. Kommen sie allerdings aus einem anderen OpenOffice-Dokument, stellt das Kopieren kein Problem dar. Auch wenn es sich dabei um andere Dokumenttypen OpenOffices handelt klappt es problemlos. Seltsam ist es aber dennoch, vor allem, dass es sich mit Delphi nicht entfernen lässt. Wenn noch jemand eine Idee hat, mich würd's interessieren, aber ich kann auch so beruhigt schlafen :wink: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:11 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