Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Label grün einfärben wenn platine verbunden, sonst rot (https://www.delphipraxis.net/84067-label-gruen-einfaerben-wenn-platine-verbunden-sonst-rot.html)

Overclocker 10. Jan 2007 21:17


Label grün einfärben wenn platine verbunden, sonst rot
 
so das mit den eingängen hat sich nun erledigt, funktioniert soweit.

dann habe ich das ganze programm noch ein bisschen grafisch verändert, doch eins bekomme ich nicht hin.

wenn das gerät verbunden ist, dann will ich dass das label wo: Card 3 connected drinenn steht GRÜN wird, wenns nicht connected ist dann soll das label ROT werden.

hier der text zum connecten an die platine:


Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var h,CardAddr:longint;
begin

  CardAddr:=3;
  h:= OpenDevice(CardAddr);
  case h of
    0..3: label1.caption:='Card '+ inttostr(h)+' connected';
    -1: label1.caption:='Card '+ inttostr(CardAddr)+' not found';
  end;

wie ich das label selber färben kann weis ich, nur ich bekomme die bedingung nicht hin, also quasi WENN verbunden, DANN grün, ansonsten rot

weis jemand ne schnelle lösung, bin eben nochn ziemlicher anfänger in delphi und darum für jede hilfe dankbar Stupid

marabu 11. Jan 2007 09:13

Re: USB K8055 Platine (Eingänge in Edit1 ausgeben)
 
Herzlich willkommen in der Delphi-PRAXiS, OverClocker.

Die Bits kannst du so einlesen und darstellen:

Delphi-Quellcode:
const
  MAX_CHANNEL = 5;
var
  s: String[MAX_CHANNEL];
  i: Integer;
begin
  for i := 1 to MAX_CHANNEL do
    s[i] := Chr(Ord('0') + Ord(ReadDigitalChannel(i)));
  Edit.Text := s;
end;
Natürlich kannst du die einzelnen Bits auch getrennt darstellen.

Freundliche Grüße vom marabu

Overclocker 11. Jan 2007 11:02

Re: USB K8055 Platine (Eingänge in Edit1 ausgeben)
 
Delphi-Quellcode:
const
  MAX_CHANNEL = 5;
var
  s: String[MAX_CHANNEL];
  i: Integer;
begin
  for i := 1 to MAX_CHANNEL do
    s[i] := Chr(Ord('0') + Ord(ReadDigitalChannel(i)));
  Edit.Text := s;
end;
das heißt ich müsste, wenn mein edit fehlt EDIT1 heißt an diese stelle

Edit.Text := s;

Edit1.Text := s;

schreiben oder?

marabu 11. Jan 2007 11:10

Re: USB K8055 Platine (Eingänge in Edit1 ausgeben)
 
Wenn du wirklich jedes einzelne Bit in einem dedizierten Edit-Control anzeigen möchtest, dann geht das etwa so:

Delphi-Quellcode:
const
  MAX_CHANNEL = 5;
var
  i: Integer;
begin
  for i := 1 to MAX_CHANNEL do
    with FindComponent(Format('Edit%d', [i])) as TEdit do
      Text := Chr(Ord('0') + Ord(ReadDigitalChannel(i)));
end;
Voraussetzung ist, dass der Code Teil einer Methode der Form ist, welche die Edit-Controls verwaltet.

Getippt und nicht getestet.

Freundliche Grüße

Overclocker 11. Jan 2007 12:39

Re: USB K8055 Platine (Eingänge in Edit1 ausgeben)
 
naja mein ziel ist es, die 5 eingänge jeweils in 5 edit felder ausgeben lassen, d. h. es gibt 5 edit feler (edit1, edit2, edit3, edit4, edit5) und in jedem soll ein eingang ausgegeben werden, d. h. eingang 1 soll in edit 1 ausgeben werden usw.

Overclocker 11. Jan 2007 18:36

Re: USB K8055 Platine (Eingänge in Edit1 ausgeben)
 
@marabu


DANKE FÜR DEINE HILFE :mrgreen: :mrgreen: :mrgreen: :mrgreen:

funktioniert super, jetz kann ich wieder an meinem projekt weiter arbeiten und wenn ich wieder ne frage habe komme ich wieder auf dieses tolle forum hier zurück ;)


big thx

Overclocker 11. Jan 2007 20:26

Re: USB K8055 Platine (Eingänge in Edit1 ausgeben)
 
so das mit den eingängen hat sich nun erledigt, funktioniert soweit.

dann habe ich das ganze programm noch ein bisschen grafisch verändert, doch eins bekomme ich nicht hin.

wenn das gerät verbunden ist, dann will ich dass das label wo: Card 3 connected drinenn steht GRÜN wird, wenns nicht connected ist dann soll das label ROT werden.

hier der text zum connecten an die platine:

Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var h,CardAddr:longint;
begin

  CardAddr:=3;
  h:= OpenDevice(CardAddr);
  case h of
    0..3: label1.caption:='Card '+ inttostr(h)+' connected';
    -1: label1.caption:='Card '+ inttostr(CardAddr)+' not found';
  end;
wie ich das label selber färben kann weis ich, nur ich bekomme die bedingung nicht hin, also quasi WENN verbunden, DANN grün, ansonsten rot

weis jemand ne schnelle lösung, bin eben nochn ziemlicher anfänger in delphi und darum für jede hilfe dankbar :stupid:

jmd anders 11. Jan 2007 20:36

Re: Label grün einfärben wenn platine verbunden, sonst rot
 
abgesehen davon, dass man bei einer neuen frage einen neuen thread öffnet, kannst du doch einfach zu deiner case-of anweisung den farbumschwung mit einfassen
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var h,CardAddr:longint;
begin

  CardAddr:=3;
  h:= OpenDevice(CardAddr);
  case h of
    0..3:
      begin
        label1.caption:='Card '+ inttostr(h)+' connected';
        label1.Font.Color:=ClLime;
      end;
 
    -1:
      begin
        label1.caption:='Card '+ inttostr(CardAddr)+' not found';
        label1.Font.Color:=ClRed;
      end;
   end;
 end;

igel457 11. Jan 2007 20:37

Re: Label grün einfärben wenn platine verbunden, sonst rot
 
Ich hatte gerade ein Déjàlu...

Wie wäre es mit...
Delphi-Quellcode:
if h in [0..3] then
begin
  labelX.Caption:='Card '+ inttostr(CardAddr)+' connected';
  labelX.Color := clGrün;
end
else
begin
  labelX.Caption:='Card '+ inttostr(CardAddr)+' not connected';
  labelX.Color := clRed;
end;

Overclocker 11. Jan 2007 20:46

Re: Label grün einfärben wenn platine verbunden, sonst rot
 
hey,

danke für eure schnelle hilfe, und schon bin ich wieder ein stück schlauer :)

und wegen dem thread, dachte sonst wird das forum wegen meinen vielen fragen zu schnell voll gespamed :roll:


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:55 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz