Entwickler-Ecke

Multimedia / Grafik - Farbanzeige für ColorDialog


Benny800 - Sa 01.01.11 17:16
Titel: Farbanzeige für ColorDialog
Hallo zusammen,

mich hat es gestört, dass man mit dem ColorDialog zwar eine Farbe auswählen kann, aber nie weiß, welche gerade ausgewählt ist. Deshalb hab ich mich an einer kleinen Farbvorschau versucht.


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
procedure TForm1.ColorDialog1Close(Sender: TObject);
var
  bmp: TBitmap;
begin
  bmp := TBitmap.Create;
  bmp.Width := 25;
  bmp.Height := 25;
  bmp.Canvas.Brush.Color := ColorDialog1.Color;
  bmp.Canvas.Rectangle(002525);
  Image3.Canvas.Draw(00, bmp);
  bmp.Free;
end;


Das funktioniert auch ohne Probleme. Nur leider bekomme ich immer nur die alte Farbe, da beim Close-Event die Color-Eigenschaft noch nicht aktualisiert wurde. Wie kann ich das umgehen?

Grüße Dennis


bummi - Sa 01.01.11 18:25

Bastle Dir doch einen ExcuteWrapper

Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
Function ColorDialogWrapper(CD:TColorDialog;DestImage:TImage):Boolean;
begin
  Result := CD.Execute(nil);
  if Result and Assigned(DestImage) then
    begin
      // DeinCode
    end;
end;


Benny800 - Sa 01.01.11 18:38

Stimmt. Hab gar nicht mehr daran gedacht, dass im Programmablauf so lange bei Execute gewartet wird bis der Dialog wieder zu ist.