Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi aus der zwischenablage holen und editfenster wechseln? (https://www.delphipraxis.net/101414-aus-der-zwischenablage-holen-und-editfenster-wechseln.html)

PaddyMu 12. Okt 2007 19:01


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

dominikkv 12. Okt 2007 19:10

Re: aus der zwischenablage holen und editfenster wechseln?
 
herzlich willkommen :party:

also die zwischenablage erreichst du über clipboard:
Delphi-Quellcode:
uses Clipbrd;
showmessage(Clipboard.AsText);
jetzt musst du nur noch die zahlen rausfiltern, such am besten mit Hier im Forum suchenPos bzw Hier im Forum suchenPosEx nach dem Punkt der die trennt.

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)

peschai 12. Okt 2007 19:22

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"

PaddyMu 12. Okt 2007 19:33

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

dominikkv 12. Okt 2007 20:10

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]));

PaddyMu 12. Okt 2007 20:27

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..

dominikkv 12. Okt 2007 20:31

Re: aus der zwischenablage holen und editfenster wechseln?
 
zeig mal was wie deine procedure aussieht dann können wir dir vllt helfen :wink:

PaddyMu 12. Okt 2007 20:36

Re: aus der zwischenablage holen und editfenster wechseln?
 
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin
     Laenge:=3;
     Laenge:=length(Edit1.Text);
     Edit2.SetFocus;
end;
da.. ist bestimmt ein saublöder fehler drin^^
Laeunge ist oben mit integer definiert

dominikkv 12. Okt 2007 20:41

Re: aus der zwischenablage holen und editfenster wechseln?
 
Zitat:

Zitat von PaddyMu
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin
     Laenge:=3;
     Laenge:=length(Edit1.Text);
     Edit2.SetFocus;
end;
da.. ist bestimmt ein saublöder fehler drin^^

na klar xD

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;

quendolineDD 12. Okt 2007 20:43

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:
procedure TForm1.Edit1Change(Sender: TObject);
begin
  if length(Edit1.Text) >= 3 then
    Edit2.SetFocus;
end;
Da war wer schneller :-\
Nun hast du in 3 Posts den gleichen Quelltext xD

Progman 12. Okt 2007 20:44

Re: aus der zwischenablage holen und editfenster wechseln?
 
Delphi-Quellcode:
procedure TForm1.Edit1Change(Sender: TObject);
begin
  if length(Edit1.Text)=3 then Edit2.SetFocus;
end;
Aber MaskEdit wäre die bessere Möglichkeit, finde ich.

PaddyMu 12. Okt 2007 20:53

Re: aus der zwischenablage holen und editfenster wechseln?
 
aah danke nu gehts
sorry für die mühe^^

PaddyMu 13. Okt 2007 13:29

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:
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;
was ist denn falsch? ich komm nich drauf..
MfG

quendolineDD 13. Okt 2007 13:37

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)

PaddyMu 13. Okt 2007 14:34

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:

Ungenügende Forward- oder External-Dekleration: 'TForm1.Copy'
Das heist ? :(

quendolineDD 13. Okt 2007 14:47

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.

PaddyMu 13. Okt 2007 15:07

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

dominikkv 13. Okt 2007 15:33

Re: aus der zwischenablage holen und editfenster wechseln?
 
hmm also nochmal:
mit ClipBoard.AsText bekommst du den Inhalt der Zwischenablage als String.
Delphi-Quellcode:
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;
Das Beispiel ist ungetestet und kann Fehler enthalten (zB zu viel/zu wenig kopiert).

Sharky 13. Okt 2007 16:14

Re: aus der zwischenablage holen und editfenster wechseln?
 
Hai,

ich würde die Aufteilung des Strings entweder mit der Explode Funktion, oder einfach mit der guten alten StringList machen.

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