Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Wie Controls disabled zeichnen (https://www.delphipraxis.net/97695-wie-controls-disabled-zeichnen.html)

Udo 14. Aug 2007 17:20


Wie Controls disabled zeichnen
 
Hallo zusammen

ich habe mir einen eigenen Button gebaut der von TCustomControl abgeleitet ist.
In Paint zeichen ich dann Farben, Caption oder Picture auf den Canvas.
Ich finde leider nichts wie ich das Teil disabled zeichnen kann.
Hat jemnd ne Idee wie das geht. :gruebel:

Grüsse
Udo

SirThornberry 14. Aug 2007 17:34

Re: Wie Controls disabled zeichnen
 
ich versteh dich nicht. Du zeichnest das alles selbst aber weißt nicht wie du es "disabled" zeichnen sollst? Du als derjenige der zeichnet bist doch derjenige der bestimmt wie es aussieht :gruebel:

borncrush 14. Aug 2007 17:36

Re: Wie Controls disabled zeichnen
 
Ich denke mal genau da liegt der Denkfehler, wenn du selbst ein Control zeichnest,
musst du auch selbst dafür sorgen, dass es "disabled" dann anders aussieht.

//edit:
Sprich änder die Schriftfarbe und sorg dafür, dass der Knopf nicht drückbar ist (visuell).

gruß

Udo 14. Aug 2007 17:52

Re: Wie Controls disabled zeichnen
 
Hallo
Da war ich wohl etwas missverständlich. Mir ist schon klar dass ichs selbst tun muss.
Ich dachte mehr an ne Grafikroutine. Ich nehme mal an Caption muss ich in Color clGrayText(oder so) zeichnen, aber wie geht das mit einem Pic. Wie lass ich ein Bitmap(kann auch png, jpg sein) disabled aussehen?
Cavas.DrawDisabled(x, y, FPicture.Graphic) sozusagen.

gruss

Muetze1 14. Aug 2007 18:30

Re: Wie Controls disabled zeichnen
 
Text mit einer hellen Farbe (Hellgrau oder sogar weiss) in fett malen und danach das ganze nochmal in einer dunkleren Graufarbe (clGray) und nicht mehr fett, aber x und y um je einen pixel erhöht.

halinchen 14. Aug 2007 18:57

Re: Wie Controls disabled zeichnen
 
Ich glaube er will ein Bild (TBitmap) sozusagen "die Farbe entziehen", also es ausgrauen.

Ich würde 2 Bitmaps nehmen, 1x enabled und 1x disabled. (Oder auch 2 nebeneinander. Guck dir mal TBitBtn an. ->Glyph und GlyphCount oder so).

Neutral General 14. Aug 2007 19:10

Re: Wie Controls disabled zeichnen
 
Also hab dir mal was geschrieben was dir vielleicht helfen könnte.

Delphi-Quellcode:
procedure MakeGray(ABmp: TBitmap);

  procedure SetGray(var x: PRGBQuad);
  var mitte: Byte;
  begin
    mitte := (x^.rgbBlue + x^.rgbGreen +  x^.rgbRed) div 3;
    x^.rgbBlue := mitte;
    x^.rgbGreen := mitte;
    x^.rgbRed := mitte;
  end;

var i,j: Integer;
    x: PRGBQuad;
begin
  ABmp.PixelFormat := pf32Bit;
  for i:= 0 to ABmp.Height-1 do
  begin
    x := ABmp.ScanLine[i];
    for j:= 0 to ABmp.Width-1 do
    begin
      SetGray(x);
      inc(x);
    end;
  end;
  ABmp.PixelFormat := pf24Bit;
  ABmp.Modified := true;
end;

// Verwendung
MakeGray(Image1.Picture.Bitmap);
Wobei sollte/muss man eigentlich p Disposen? Dann müsste man das noch einbauen aber ansonsten gehts.
Natürlich nicht. Man will ja nicht die Bitmapdaten freigeben :roll:

Gruß
Neutral General

Lannes 14. Aug 2007 20:21

Re: Wie Controls disabled zeichnen
 
Hallo,

der Code zeichnet Text und ein Bitmap "disabled" auf das Canvas der Form:
Delphi-Quellcode:
var s : String;
    bmp : TBitmap;
begin
  s := 'Hallo';
  DrawState(Canvas.Handle, Canvas.Brush.Handle, nil, Integer(s), 0,
            10,10,0,0,DST_TEXT or DSS_DISABLED);
  bmp := TBitmap.Create;
  try
  bmp.LoadFromFile('C:\Temp\Image.bmp');
  DrawState(Canvas.Handle, Canvas.Brush.Handle, nil, bmp.Handle, 0,
            50,10,0,0,DST_BITMAP or DSS_DISABLED);
  finally
    bmp.Free;
    end;

Udo 14. Aug 2007 20:58

Re: Wie Controls disabled zeichnen
 
Ich danke euch :thumb:
DrawState hab ich gesucht.

gruss


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:09 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