Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Object-Pascal / Delphi-Language (https://www.delphipraxis.net/32-object-pascal-delphi-language/)
-   -   Delphi RGB-Farbvorschau mit spinedit funzt nicht immer (https://www.delphipraxis.net/18171-rgb-farbvorschau-mit-spinedit-funzt-nicht-immer.html)

yankee 15. Mär 2004 21:03


RGB-Farbvorschau mit spinedit funzt nicht immer
 
Liste der Anhänge anzeigen (Anzahl: 1)
Ich habe eine RGB-Fabvorschau geschrieben. Funzt auch, aber wenn man in die spinedits Zahlen auf der Tastatur (anstatt Maus) eingibt dann mault das Programm, das der Integer ungültig ist. So sieht das aus:

Delphi-Quellcode:
procedure TForm7.farb_update;
begin
form7.Panel1.color :=RGB(form7.SpinEdit1.value, form7.spinedit2.value, form7.spinedit3.value);
end;

procedure TForm7.rotchg(Sender: TObject); //spinedit1.onchange
begin
farb_update;
end;

procedure TForm7.blauchg(Sender: TObject); //spinedit2.onchange
begin
farb_update;
end;

procedure TForm7.gupdate(Sender: TObject); //spinedit3.onchange
begin
farb_update;
end;
Ach und übrigens, wie kann man die Werte in Hexadezimal-Werte umrechnen?

dizzy 15. Mär 2004 22:04

Re: RGB-Farbvorschau mit spinedit funzt nicht immer
 
Du musst ungültige Eingaben, die sich nicht in einen Integer wandeln lassen, von Hand abfangen. Ein keine Eingabe '' ist auch eine ungültige Eingabe.

Eine andere Variante wäre es nicht auf onChange zu reagiren, sondern durch einen ButtonClick die Vorschau zu aktualisieren.
Ist einfacher, aber auch unschöner!

Schau dir dazu mal die Prozedur "Val" in der Hilfe an.


gruss,
dizzy

PS:
Zitat:

Ach und übrigens, wie kann man die Werte in Hexadezimal-Werte umrechnen?
Dazu gibt es reichlich Material. Einfach mal das Forum durchsuchen.

yankee 16. Mär 2004 05:16

Re: RGB-Farbvorschau mit spinedit funzt nicht immer
 
naja, ich habe das forum bereits vor meinem Beitrag durchsucht. Ich habe allkes ausprobiert, was mir eingefallen ist, auch Val, try und except sowie if spineditX.value >=0
Aber allmählich gehen mir die Ideen aus.

Luckie 16. Mär 2004 05:26

Re: RGB-Farbvorschau mit spinedit funzt nicht immer
 
Also zu mindest die Hau-Ruck-Methode mit try-exceot sollte geholfen haben. :roll:

Jens Schumann 16. Mär 2004 06:57

Re: RGB-Farbvorschau mit spinedit funzt nicht immer
 
Hallo,
ich weiß warum eine Exception auftritt.
Wenn im TSpinEdit eine Zahl z.B. 42 steht und Du diese Zahl markierst.
Jetzt möchtest Du die 42 durch 84 ersetzen. Dafür tippst Du zuerst auf
die acht und dann auf die vier. Was passiert aber, wenn Du auf die acht
getippt hast? Erst wird der Inhalt des TSpinEdit gelöscht und dann die acht
geschrieben. Die Löschung des Inhalt's wird jedoch als Änderungen erkannt
und das OnChange-Event wird ausgelöst bevor die acht in TSpinEdit steht.
Dadurch kommt es in farb_update zur Execption. Die Lösung wäre (wie
von Luckie erwähnt) dann folgende:
Delphi-Quellcode:
procedure TForm7.farb_update;
begin
  Try
    form7.Panel1.color :=RGB(form7.SpinEdit1.value, form7.spinedit2.value, form7.spinedit3.value);
  Except
    end;
end;

yankee 16. Mär 2004 12:56

Re: RGB-Farbvorschau mit spinedit funzt nicht immer
 
Danke für eure Antworten. Auf die try-Idee bin ich schon vorher mal gekommen, aber es hat trotzdem nicht gefunzt. Ich bin jetzt mal auf die Idee gekommen :idea: , das Programm zu kompilieren und danach nicht aus Delohi, sonder aus dem Windows-Explorer heraus zu starten. Und siehe da, ES FUNZT!!! :lol:
Delphi scheint ja nur aus irgendwelchen Debug-Gründen zu maulen, aber wenn es sein kann, dass irgendetwas schief läuft, dann würde man doch kein try nehmen, oder?? :gruebel:

Jörn 16. Mär 2004 14:56

Re: RGB-Farbvorschau mit spinedit funzt nicht immer
 
Zur Zahlenumwandlung (hex): http://micha.p2board.de/forum/thread.php?threadid=19
Ist leider schon älter, müsste ich mal aktualisieren: Statt der selbstgebastelten Funktion für Potenzen solltest du Power nehmen (war damals weder mir noch meinem Informatiklehrer bekannt)

MfG

dizzy 16. Mär 2004 21:30

Re: RGB-Farbvorschau mit spinedit funzt nicht immer
 
Zitat:

Zitat von yankee
Danke für eure Antworten. Auf die try-Idee bin ich schon vorher mal gekommen, aber es hat trotzdem nicht gefunzt. Ich bin jetzt mal auf die Idee gekommen :idea: , das Programm zu kompilieren und danach nicht aus Delohi, sonder aus dem Windows-Explorer heraus zu starten. Und siehe da, ES FUNZT!!! :lol:
Delphi scheint ja nur aus irgendwelchen Debug-Gründen zu maulen, aber wenn es sein kann, dass irgendetwas schief läuft, dann würde man doch kein try nehmen, oder?? :gruebel:

Beim debuggen (in der IDE starten) mekert Delphi immer. Das ist standardmäßig so eingestellt, und gewollt! Kein Bug. In den Optionen kann man das irgendwo ausschalten.
Dann ist klar, dass ein try...except (scheinbar) nix gebracht hat :roll:


gruss,
dizzy


Alle Zeitangaben in WEZ +1. Es ist jetzt 07:15 Uhr.

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