![]() |
Labelfarbe ändern, wenn...
... etwas bestimmtes drin steht!
Hi @ all folgendes: ich habe ein label, in dem steht eine zahl, soweit, so gut... nur, wenn in dem label die zahl größer oder gleich 100 ist, soll die schrift rot, wenn die zahl größer oder gleich 50 ist gelb und wenn die zahl kleiner oder gleich 49 ist grün werden. nur funkts das nicht, die schrift ist IMMER rot... vielleicht hab ich im quelltext auch nen fehler gemacht?!:
Code:
THX
if ges_mo.caption>='100' then
begin ges_mo.font.color:=clred; end else if ges_mo.caption>='50' then begin ges_mo.font.color:=clyellow; end else if ges_mo.caption<='50' then begin ges_mo.font.Color:=clgreen; end; Chriss |
Das liegt daran, dass du vergleichst, ob ein String mit einem anderen übereinstimmt (somit kannst du nicht > oder < verwenden).
Du müsstest also schreiben:
Delphi-Quellcode:
Chris
if IntToStr(Label1.Caption) >= 100 then // ...
|
Fehler:
"Es gibt keine überladene Version von 'IntToStr', die man mit diesen Argumenten aufrufen kann. Hatte ich schon verscuht! |
Moin Chriss,
StrToInt |
ahh, danke!!!
:coder: |
Hallo,
der Code passt auch ganz gut zum Thema
Delphi-Quellcode:
Label1.Caption:=IntToStr(StrToInt(Label1.Caption)+1);
|
Re: Labelfarbe ändern, wenn...
Zitat:
|
ich hab nur das problem, dass ich mit den label noch rechnen muss, und sobald ich das mit der farbe mache, gibt der rechenfehler aus... geht also nicht so, wie ichs mir vorgestellt habe, egal, trotzdem danke!
|
Hoi Chriss.
Zeig mal deinen Code ... weil die Farbe des Labeltextes dürfte da nichts ausmachen... :roll: |
es sind mehrere rechnungen drin:
vorrechnung:
Code:
dann die endrechnung:
ges_mo.caption:=floattostr(strtofloat(plan_mo_ges_fr.caption)+strtofloat(plan_mo_ges_ab.caption));
Code:
so, und da entsteht anscheinend ein konflikt, denn ich will, dass das label ges_mo eingefärbt wird:
ges_ges.caption:=floattostr(strtofloat(ges_mo.caption)+strtofloat(ges_di.caption)+strtofloat(ges_mi.caption)+strtofloat(ges_do.caption)+strtofloat(ges_fr.caption)+strtofloat(ges_sa.caption)+strtofloat(ges_so.caption));
rot, wenn über 100 gelb, wenn über 50 und grün wenn unter 50 |
Ich habe aber auch selbst was falsches geschrieben. :oops:
Wenn dann müßte es so heißen:
Delphi-Quellcode:
Ist Deine Berechnung auch in einen try..except-Block gepackt?
if (StrToInt(ges_mo.caption) >= 50) then
... if (StrToInt(ges_mo.caption) <= 49) then |
habe das Thema nur mal so überflogen aber eins will ich wissen: warum benutzt ihr eigentlich für so was kein Case :?: Bei
Code:
ist mir das auch zu blöd, aber kommt da noch eine Möglichkeit dazu, ist doch wohl schon Case angesagt, oder?
if ... then... else
|
ich benutze kein case, weil ich mit if...then...else super klar komme und das hierzu gut passt, es sind nämlich nur ein paar befehle und das is der großteil des programms, da alles andere aufeinander aufbaut, also keine große sache an sich...
aber naja... eigentlich haste recht, wenn ich mal ne ausbaustufe von dem prog. mache, dann verwende ich besser case of... cya chriss |
Ich denke nicht, das in diesem Fall case angebracht wäre.
Er will ja größer oder gleich 100, größer oder gleich 50 und kleiner gleich 49 abfragen. Es steht aber nicht da, welche Werte möglich sind, also kleiner 0 oder wie weit über die 100 hinaus. Aber mal angenommen der kleinste mögliche Wert ist 0, dann müßte es eigentlich so aussehen:
Delphi-Quellcode:
Zahlen kleiner als 0 würden hier dann aber auch in rot angezeigt.
case StrToInt(ges_mo.caption) of
0..49: ges_mo.font.Color := clLime; 50..99: ges_mo.font.Color := clYellow; else ges_mo.font.Color := clRed; end; |
@Marco, so wars vorher:
Code:
Nun, was ist jetzt besser zu lesen/verstehen ? Eher doch wohl Dein Code. :hello:
if ges_mo.caption>='100' then
begin ges_mo.font.color:=clred; end else if ges_mo.caption>='50' then begin ges_mo.font.color:=clyellow; end else if ges_mo.caption<='50' then begin ges_mo.font.Color:=clgreen; end; |
oha, JETZT funktionierts
vielen dank.... frage mich nur, warum das mit if...then...else nicht funktioniert..... cya Chriss :coder: |
Geht es etwa jetzt mit Case :?: Mit IF THEN, das ist doch genau dasselbe. haha, ich sags ja immer: lesbarer Code ist besser, als ein schnelles Programm (< 1 ms schneller) :lol:, das nicht funktioniert.
|
du, kA, auf jeden fall funktioniert das ganz jetzt auf einmal!
wenn ich das ganze an dieselbe stelle schreibe mit if...then...else, dann tut's nicht! komische sache! danke nochmal!! cya chriss |
ja, komische Sache, aber besser es funktioniert und keiner weiß warum, als umgekehrt. War bestimmt nur Tippfehler. Ab 3 Auswahlmöglichkeiten nehm ich Case und basta. Ich bin aber trotzdem etwas verblüfft, daß der Fehler durch Case so schnell weg war. Wie gesagt: ich sags ja immer!
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:58 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