Entwickler-Ecke

Sonstiges (Delphi) - Bool mit Komponente


dude - Fr 14.03.03 14:06
Titel: Bool mit Komponente
Hi,

ich habe hier eine Bool Funktion


Quelltext
1:
2:
3:
4:
function IsOnline: boolean;
begin
  result:=InternetGetConnectedState(nil, 0);
end;


In diese Funktion will ich folgendes Einbauen


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
If IsOnline := True then
begin
  edit1.text := 'online'
end;
If IsOnline := False then
begin
  edit1.text := 'offline'
end;


ich will den Code NICHT in einen Timer einbauen. Er soll ohne Timer funktionieren. Das einzigste Problem ist, dass ich in dieser Bool Funktion keine Komponenten ansprechen kann.

Wie könnte ich das Problem lösen ?

Mfg, dude


Keldorn - Fr 14.03.03 14:11

kurz überflogen und

Quelltext
1:
If IsOnline = True then                    

nicht := in Abfragen
außerdem geht es auch so:

Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
If IsOnline = true then   //selbst das =true kannst du noch weglassen
begin 
  edit1.text := 'online' 
end
else
begin 
  edit1.text := 'offline' 
end;


wenn du nur die eine Zuweisung edit1.text:= hast, kannst du dir auch noch die begin und ends sparen.
ganz kurz:

Quelltext
1:
2:
If IsOnline then edit1.text := 'online' 
            else edit1.text := 'offline' ;


schau mal in die FAQ weiter unten, da ist bestimmt auch was für if dabei

Mfg Frank


Christian S. - Fr 14.03.03 16:30

Zitat:
Das einzigste Problem ist, dass ich in dieser Bool Funktion keine Komponenten ansprechen kann.
Ich denke, was Du brauchst (zusätzlich zu den Hinweisen von Keldorn), ist folgendes:


Quelltext
1:
Form1.Edit1.text :='online';                    


MfG,
Peter


Delete - Fr 14.03.03 16:39

Das dürfte dann der dritte Beitrag innerhalb von 48 Stunden zum gleichen Problem sein oder? :wink:

Wenn du auf mehr Elemente aus Form1 zugreifen mußt, dann mach deine Prozedur zu einer Methode vom Objekt TForm1.


dude - Fr 14.03.03 17:32

@ Luckie : Ja, ich hab nun eine Prozedur gebaut mit Keldorn's Beispiel:


Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
private
  procedure OnOff;

...

procedure TForm1.OnOff;
var ergebnis : Boolean;
begin
  ergebnis := InternetGetConnectedState(nil, 0);
  if ergebnis then
  begin
  form1.edStatus.Text := 'on';
  form1.edStatus.Font.Color := clGreen;
  end
  else
  form1.edStatus.Text := 'off';
  form1.edStatus.Font.Color := clMaroon;
end;


@ Peter Lustig: Danke, du hast eigentlich das beantwortet was ich wissen wollte. Habe zuerst gedacht, dass die Funktion schon wie ein eigener Timer ist, der sich automatisch auf True setzt.

Danke auch, habt mir sehr geholfen !


Christian S. - Fr 14.03.03 17:34

In der Prozedur, die Du jetzt benutzt, brauchst Du das Form1. ... nicht mehr, denn die Prozedur gehört ja jetzt schon zu Form1. Da wird er nicht mehr meckern, wenn Du nur "edStatus.Text:='on'" schreibst.