Daten aus dem Edit Feld auslesen.

Manni-das-Mammut

Grünschnabel
Hallo leute ich hab eine kurze und warscheinlich sehr dumme Frage.

Unzwar, ich habe einen Butten. Wenn ich da drauf klicke öffnet sich eine Internetseite mit den Standartbrowser. Diese Internetseite will ich aber nicht immer im Code umändern sondern ich möchte sie schnell über ein Edit-Feld umändern.

Soll heißen wenn ich im Editfeld "www.xxx.de" eingebe, soll er wenn ich auf den Butten drücke "www.xxx.de" öffnen.

Nur weis ich nicht wie das geht. Schande über mich aber ich hab kein Schimma :-(

Hoffe ihr könnt mir helfen.

Danke und Tschüss
 
Wahrscheinlich öffnest du die Internet-Seite mit dem Befehl ShellExecute, und gibst als Parameter PCHAR(url) ein, wobei die URL vollständig sein muss (http://www.xxx.de zB). Du kannst diesen String aber beliebig verändern (mehr ist es ja eigentlich nicht). Deshalb kannst du einfach

ShellExecute(Application.Handle, 'open', PChar('http://'+ edit1.text), nil,
nil, sw_ShowNormal);

benutzen, wobei ich halt einfach edit1 benutzt habe. wenn du es neu in einen Quelltext schreibst, vergiss nicht, die ShellAPI einzubinden.

Hoffe, ich konnte dir helfen.

Hellie
 
Achso !
Ja danke das funktioniert so einwandfrei. Aber nun hab ich noch ne dumme Frage :eek:

Wie steuer ich die Intervalzeit eines Timers mit einen Editfelfd an ?! AM besten gleich so das ich es in Stunden/minuten angeben kann und nicht in Millisekunden.

Danke im vorraus. Sorry ich bin anfänger...aber wie heist es so schön ? "Wer nicht fragt bleibt dumm..."

Tschüss
 
Das muss soweit ich weiß alles in der Prozedur geregelt sein. Also am besten mit einem Button, der aus dem Edit die Zahl einließt, und dann in Millisekunden umrechnet (Timer.Intervall ist vom Typ Integer und wird in Millisekunden angegeben).

Hellie
 
Eem ja. :eek:

Nur leider gottes weis ich tatsächlich nicht wie das geht.
Vieleicht kannste mir den Code ja mal zusammenschreiben ? Aber ich will ja nicht unverschähm klinge...

Vieleicht haste ja mal lust und zeit. Wär die bis in die ewichkeit dankbar. :)

Danke und tschüss :
 
k, vom Urschleim an, mit Erklärung, weil ich hoffe, dass du dir das auch mit durchliest um das nächste mal mehr selbst schreiben kannst.

Ich denke mal du wirst schon mit Buttons gearbeitet haben (ansonsten einfach vom Reiter Standart die Komponente Button auf der Form positionieren). Dann schreibst du das am besten in diese Prozedur (die kannst du per Doppelklick auf den Button erstellen/aufrufen).

Dort hast du dann die Möglichkeit, eine Variable zu deklarieren (Typ: Integer), die du aus dem Edit einliest und dann bearbeitest.

Je nachdem, welche Zeiteinheit eingegeben werden soll, muss dieser Wert dann mit einem bestimmten Faktor multipliziert werden. Ich nehme für mein Beispiel mal Minuten, das rechnet sich am frühen Morgen einfacher. ;)

Als letzten muss nur noch dieser Integer-Wert an den Timer als Intervall übergeben werden.

Code:

Code:
procedure TForm1.Button1Click(Sender: TObject);
   var i:integer;   //Deklaration
begin
   i:= StrToInt(edit1.Text);    //Einlesen
   i:= i*6000;                  //Umwandeln in Millisekunden
   Timer1.Interval:= i;         //Dem Timer als Intervall übergeben
end;

Falls du noch Fragen hast, auch bezüglich dieses Codes, würde ich mich freuen, wenn du dich noch mal melden würdest, anstatt einfach zu kopieren. Copy'n'Paste ist unsportlich ;)

Hellie

PS: Ach ja, wenn du den Benutzer wählen lassen willst, welche Zeiteinheit benutzt werden soll, muss halt noch vorher der Faktor ermittelt werden. Da gibt es aber unterschiedliche Varianten, das zu tun, vielleicht findest du ja auch selbst eine.
 
Hallo Helli.

Danke erstmal. Nun steh ich aber wieder vor einen Problem. Ich möchte nämlich 1 Editfeld mit Stunden haben und eins mit Minuten. Die rechnungen für beide Felder aufzustellen ist kein Problem.

So müsste es aussehen wenn ich die Stunden direkt in die Timerzeit umrechne.

procedure TForm1.Button1Click(Sender: TObject);
var i:integer;
begin
i:= StrToInt(edit1.Text)
i:= i*3600000;
Timer1.Interval:= i;
end;

Nun muss ich das aus Editfeld 1 (edit1) aber noch Plus den wert aus Edit2 rechnen. Das würde ja auch gehen, oder geht das so nicht ?

i:= StrTolnt(edit1.Text+edit2.Text)


Nur dann rechnet er die Zahlen aus den Editfeldern in Stunden. Also muss ich für das 2 Editfeld noch ne eigene Rechnung aufstellen da es ja für Minuten sein soll und nicht für Stunden wie das erste. Nur weis ich nicht wie ich das 2. Editfeld getrennt vom 1. ansteuern soll. Ich müsste dann ja 2 mal "i: "ausrechnen und dann zusammenrechnen. (oder ehr gesagt muss das Programm das machen)

Vieleicht kannste mir das ja mal erklären ? Warscheinlich wieder ne einfach Lösung aber ich komme ganz einfach nicht drauf :(

Danke und Tschüss
 
Das einfachste wird sein, dass du zwei Variablen deklarierst, und diese dann einzeln bearbeitest, und dann addierst. Also

Code:
procedure TForm1.Button1Click(Sender: TObject);
   var i,j:integer;   //Deklaration
begin
   i:= StrToInt(edit1.Text);   //Einlesen der Minuten
   i:= i*6000;                         //Umwandeln in Millisekunden
   j:= StrToInt(edit2.text);    //Einlesen der Stunden
   j:=j*360000;                     //Umwandeln in Millisekunden
   Timer1.Interval:= i+j;         //Dem Timer als Intervall übergeben
end;

Ach so, und noch etwas zur Variablenbelegung, die ich gewählt habe: Eigentlich ist das so nicht korrekt *schäm*. I und J sind Zählvariablen, die eigentlich für Zählschleifen gedacht sind. Aber solang der Code nicht öffentlich ist, macht das eigentlich nichts, ist halt nur eine Vereinbarung zur besseren Übersicht und besserem Verständnis für andere Programmierer, genau wie einrücken und so.

Hellie
 

Neue Beiträge

Zurück