![]() |
AW: Text vor einem bestimmten Zeichen NICHT löschen
Ehrlich gesagt weiß ich nicht, was danach passiert ist, aber nun springt das Programm über die Backspace-Taste hinweg, also es werden Zeichen danach auch gelöscht...
|
AW: Text vor einem bestimmten Zeichen NICHT löschen
Um es auf den Punkt zu bringen? Möchtest du eine Kommandozeile nachbauen?
|
AW: Text vor einem bestimmten Zeichen NICHT löschen
Ich weiß nicht, wieso ich das früher nicht gesagt habe...
|
AW: Text vor einem bestimmten Zeichen NICHT löschen
|
AW: Text vor einem bestimmten Zeichen NICHT löschen
Zitat:
Zitat:
Gruß K-H |
AW: Text vor einem bestimmten Zeichen NICHT löschen
Es gibt noch viele andere Wege etwas zu ändern:
Einzige wirklich sichere Lösungen: * den festen unveränderlichen Teil in einer Variable speichern, im OnChange auf dessen Änderung reagieren und bei Bedarf zurücksetzen, * bzw. immer die letzte Änderung speichern, im nächsten OnChange prüfen ob das Erforderliche noch stimmt und wenn nicht, dann die letzte Änderung verwerfen und die Kopie neu zuweisen (zurücksetzen). Beispiel: irgendwo etwas kopieren (Strg+C), dann im Edit alles markieren und das Einfügen (Strg+V, Shift-Einfg, Kontextmenü:Einfügen, WM_SETTEXT, WM_PASTE, uvm.) * Ansonsten bleibt noch Edit.ReadOnly und selbst im OnKeyDown/Up/Press auf Eingaben reagieren und alles selbst zu machen, inkl. Prüfungen welche die Eingabe verwerfen, wenn es gegen die Regeln verstößt. |
AW: Text vor einem bestimmten Zeichen NICHT löschen
Warum nicht im OnChange:
Delphi-Quellcode:
if copy(Edit.Text, 0, 5) <> 'shell>' then Edit.Text := 'shell>';
if edit.selectionstart <= 6 then edit.selectionstart := length(edit.text); //Grad nicht sicher ob 6 oder 7 Ggf. im OnClick noch:
Delphi-Quellcode:
Alles ungetestet und nur Theorie.
if edit.selectionstart <= 6 then edit.selectionstart := length(edit.text); //Grad nicht sicher ob 6 oder 7
Alternative: LabeledEdit und im Label das "shell>" Eintragen und (falls notwendig) dann entsprechend in der Edit.Text Verarbeitung dies jedesmal mit hinzufügen (
Delphi-Quellcode:
bzw.
'shell>' + Edit.Text
Delphi-Quellcode:
)
LabeledEdit.EditLabel.Caption + LabeledEdit.Text
|
AW: Text vor einem bestimmten Zeichen NICHT löschen
SelStart beginnt bei 0, aber Copy bei 1 (in VCL/Windows),
also Length passt, wobei
Delphi-Quellcode:
auch gehn sollte.
Edit.SelStart := MaxInt;
PS: ![]() ![]() ![]() oder zumindestens
Delphi-Quellcode:
if Pos('shell>', Edit.Text) <> 1 then ...
Stringmanipulationen (kopieren/verändern/...) nur zum Prüfen ist immer bissl blöd. |
AW: Text vor einem bestimmten Zeichen NICHT löschen
Liste der Anhänge anzeigen (Anzahl: 1)
Versuchs mal so
Delphi-Quellcode:
const
FixedShellDummyStringyThingy = 'shell > '; procedure TForm1.FormCreate(Sender: TObject); begin Width := 979; Height := 512; Memo1.ScrollBars := ssVertical; Memo1.Align := alClient; Memo1.WordWrap := True; Memo1.Clear; Memo1.Lines.Strings[0] := FixedShellDummyStringyThingy; Memo1.BevelInner := bvNone; Memo1.BevelKind := bkNone; Memo1.BevelOuter := bvNone; Memo1.BorderStyle := bsNone; Memo1.Color := clBlack; Memo1.Font.Size := 12; Memo1.Font.Color := $00CCCCCC; Memo1.Font.Name := 'Consolas'; end; procedure TForm1.Memo1KeyDown(Sender: TObject; var Key: Word; Shift: TShiftState); begin if (Key in [VK_UP, VK_DOWN]) then Key := 0 else if Memo1.CaretPos.X <= Length(FixedShellDummyStringyThingy) then Key := 0; end; procedure TForm1.Memo1KeyPress(Sender: TObject; var Key: Char); var CurrentLineIndex: Integer; CurrentLineStr: string; begin CurrentLineIndex := Memo1.CaretPos.Y; CurrentLineStr := Memo1.Lines.Strings[CurrentLineIndex]; if (Key = #8) and AnsiSameText(CurrentLineStr, FixedShellDummyStringyThingy) then begin Key := #0; end else begin if (Key = #13) then begin Key := #0; Memo1.Lines.Add(FixedShellDummyStringyThingy); end else begin end; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:10 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