![]() |
aus der zwischenablage holen und editfenster wechseln?
Da dies mein erster Beitrag ist hallo erstmal
ich bin ein ziemlicher neuling im delphibereich und entschuldige mich hiermit für evtl. dumme fragen etc. ;) ich komme direkt aus einem forum das damit wirbt dass es bei fragen und mitarbeit immer offen ist, mir bis jetzt aber außer unverschämten antworten nix beigebracht hat.. ich hoffe das ist hier nicht so so zu meinen fragen wie kann ich eine zahl(ip) aus der zwischenablage holen und sie in dreierblöcken auf 4 editfelder aufteilen? und gibt es eine möglichkeit, dass wenn ein editfeld mit drei stellen ausgefüllt ist ins nächste gewchselt wird? bitte seid gnädig zu mir und verwendet nicht so viele fachwörter bin wiegesagt ein ziemlicher noob in dem bereich ;) MfG |
Re: aus der zwischenablage holen und editfenster wechseln?
herzlich willkommen :party:
also die zwischenablage erreichst du über clipboard:
Delphi-Quellcode:
jetzt musst du nur noch die zahlen rausfiltern, such am besten mit
uses Clipbrd;
showmessage(Clipboard.AsText); ![]() ![]() und mit dem edit wechseln: überprüfe im onChange bzw onKeyPress die anzahl der buchstaben (length(edit1.text)) und spring dann zum nächsten edit (edit2.setFocus) |
Re: aus der zwischenablage holen und editfenster wechseln?
Hallo
Du könntest eventuell auch anstelle von 4 editfeldern eventuell ein Maskedit verwenden mit einer Maske für IP-Werte zb "999.999.999.999" |
Re: aus der zwischenablage holen und editfenster wechseln?
hallo
danke erstrmal für die antworten^^ kannst du mir mal ein beispiel nennen für das lengh? also (3(Edit1.Text)) (3 ist die stelle)? MfG |
Re: aus der zwischenablage holen und editfenster wechseln?
length ist eine Funktion und liefert die länge zurück, also einfach:
Delphi-Quellcode:
var
länge: Integer; // ... länge := length(edit1.text); showmessage(Format('Der String ist %d Zeichen lang!', [länge])); |
Re: aus der zwischenablage holen und editfenster wechseln?
ähm ok das funktioniert schon fast^^
ich habe laenge mit 3 definiert aber es springt direkt nach einer zahl ins andere edit.. |
Re: aus der zwischenablage holen und editfenster wechseln?
zeig mal was wie deine procedure aussieht dann können wir dir vllt helfen :wink:
|
Re: aus der zwischenablage holen und editfenster wechseln?
Delphi-Quellcode:
da.. ist bestimmt ein saublöder fehler drin^^
procedure TForm1.Edit1Change(Sender: TObject);
begin Laenge:=3; Laenge:=length(Edit1.Text); Edit2.SetFocus; end; Laeunge ist oben mit integer definiert |
Re: aus der zwischenablage holen und editfenster wechseln?
Zitat:
1.) ist laenge eine globale Variable? Regel: so lokal wie möglich deklarieren 2.) diese prozedure wird immer ausgeführt wenn ein sich der inhalt des edits ändert. also bei jedem tastendruck den man macht. und zwar wird laenge zuerst 3 zugewiesen, dann gleich dannach die länge vom edit.string -> warum zuesrt 3? bringt überhaupt nÜx und dann wird das fokus verändert... du willst ja nur verändern wenn die länge größergleich 3 ist. also ganz einfach:
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin if length(Edit1.Text) >= 3 then Edit2.SetFocus; end; |
Re: aus der zwischenablage holen und editfenster wechseln?
Bis jetzt legst du die Varibable laenge auf 3 und dann auf die Länge des Editfeldes , danach springst du zum nächsten.
Delphi-Quellcode:
Da war wer schneller :-\
procedure TForm1.Edit1Change(Sender: TObject);
begin if length(Edit1.Text) >= 3 then Edit2.SetFocus; end; Nun hast du in 3 Posts den gleichen Quelltext xD |
Re: aus der zwischenablage holen und editfenster wechseln?
Delphi-Quellcode:
Aber MaskEdit wäre die bessere Möglichkeit, finde ich.
procedure TForm1.Edit1Change(Sender: TObject);
begin if length(Edit1.Text)=3 then Edit2.SetFocus; end; |
Re: aus der zwischenablage holen und editfenster wechseln?
aah danke nu gehts
sorry für die mühe^^ |
Re: aus der zwischenablage holen und editfenster wechseln?
so nun habe ich mich eine ganze zeit der clipbrd gewidmet,bekomme aber immer einen Typemfehler...
Delphi-Quellcode:
was ist denn falsch? ich komm nich drauf..
type
function Copy(Zwischenablage1: string; Index, Count: integer): string; var Zwischenablage1:integer; . . . procedure TForm1.Btn4Click(Sender: TObject); begin Zwischenablage1:=StrToInt(Clipboard.AsText); Text1:= Copy(Zwischenablage1, 1, 3); Edit1.Text:=IntToStr(Text1); end; MfG |
Re: aus der zwischenablage holen und editfenster wechseln?
Du bekommst bestimmt "Integer und String blabla" als Fehler. da du das ganze als ".asText" ausgibst, wird es wohl String sein.
Also deklarier dein Zwischenablage1 als string :o) |
Re: aus der zwischenablage holen und editfenster wechseln?
ok nun habe ich nachdem ich zu deinem tipp dazu noch text1 als string deklariert habe zumindist das problem beseitigt.
nun springt er aber auf die function (copy blablubb siehe mein beitrag hier drüber) und sagt: Zitat:
|
Re: aus der zwischenablage holen und editfenster wechseln?
Wie sieht denn die Funktion aus die du da geschrieben hast?
Der Fehler kommt wohl, weil du im type deine Funktion implementiert hast, aber dann nicht, was sie machen soll. Wenn du die Funktion Copy nehmen wolltest, Dann musst du die nciht selber noch einbinden im type-Teil :) Geb mal deinen gesamten Quelltext, wenn es dir nichts ausmacht, Die Bruchstücke sind da etwas irritierend. |
Re: aus der zwischenablage holen und editfenster wechseln?
ah ok ich muss sie nich einbinden das wuste ich nicht^^
ich habe sie rausgenommen und siehe da: es geht danke!!! mit dem quelltext.. joar für schwere problem würde ich das auch machen aber ich muss das programm für die schule schreiben und ich weis nich ob es abzüge gibt wenn ich in foren nachfrage und wenn der meinen quelltext hier sieht weis er das ja also nix gegen euch reine sichereitsmasname ;) MfG |
Re: aus der zwischenablage holen und editfenster wechseln?
hmm also nochmal:
mit ClipBoard.AsText bekommst du den Inhalt der Zwischenablage als String.
Delphi-Quellcode:
Das Beispiel ist ungetestet und kann Fehler enthalten (zB zu viel/zu wenig kopiert).
procedure TForm1.Button1Click;
var IPAdresse: String; IP1, IP2, IP3, IP4: String; P1, P2: Byte; begin IPAdresse := Clipboard.AsText; // Jetzt steht in IPAdresse '192.168.178.1'; P1 := Pos('.', IPAdresse); IP1 := copy(IPAdresse, 1, P1); // jetzt steht in IP1 '192' P2 := PosEx('.', IPAdresse, P1+1); IP2 := copy(IPAdresse, P1+1, P2-P1-1); // jetzt steht in IP2 '168' P1 := PosEx('.', IPAdresse, P2+1); IP3 := copy(IPAdresse, P2+1, P1-P2-1); // jetzt steht in IP3 '178' IP4 := copy(IPAdresse, P1+1, length(IPAdresse)-P1-1); // jetzt steht in IP4 '1' showmessage(Format('%s.%s.%s.%s', [IP1, IP2, IP3, IP4])); // 192.168.178.1 end; |
Re: aus der zwischenablage holen und editfenster wechseln?
Hai,
ich würde die Aufteilung des Strings entweder mit der ![]()
Delphi-Quellcode:
procedure TDemo_Form.Button1Click(Sender: TObject);
var IPAdresse: string; sl: TStrings; begin IPAdresse := Clipboard.AsText; sl := TStringList.Create; try sl.Delimiter := '.'; sl.DelimitedText := IPAdresse; if sl.Count = 4 then begin edt_okt1.Text := sl.Strings[0]; edt_okt2.Text := sl.Strings[1]; edt_okt3.Text := sl.Strings[2]; edt_okt4.Text := sl.Strings[3]; end else begin ShowMessage('Da ist irgend ein Fehler'); end; finally sl.Free; end; end; procedure TDemo_Form.Button2Click(Sender: TObject); var IPAdresse: string; IPOktets: TStringDynArray; begin IPAdresse := Clipboard.AsText; IPOktets := Explode('.', IPAdresse); if (High(IPOktets) = 3) then begin edt_okt1.Text := ipOktets[0]; edt_okt2.Text := ipOktets[1]; edt_okt3.Text := ipOktets[2]; edt_okt4.Text := ipOktets[3]; end; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:35 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