Toon posts:

[Delphi] StringGrid / AdvStringGrid background bitmap

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een AdvStringGrid op me form staan. Dit hele form gaat een 'skin' krijgen. Graag zou ik ook de achtergrond van me grid een bitmap geven. Suggesties??

Ik hoopte dat het volgende zou werken:
StringgrdBg := TBitmap.Create;
StringgrdBg.LoadFromFile('bg.bmp');
GridBackGround := TBackGround.Create(lbAvailTracks);
GridBackGround.Bitmap := StringgrdBg;

StringgrdBg is een TBitmap
GridBackGround is een TBackground
en lbAvailTracks is een TAdvStringGrid (hanteerd redelijk hetzelfde als een gewone TStringGrid)

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Wat is een TBackground?

Wat je zou kunnen doen is in de Paint van dat TAdvStringGrid component eerst als achtergrond het plaatje tekenen. Of het WM_ERASEBKGND message afvangen en het daar in doen.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
TBackground is volgens mij een uitvinding van het AdvStringGrid. Ik kon er ook geen documentatie over vinden..

Klein code voorbeeldje misschien?? Hoe vang ik het WM_ERASEBKGND message af?

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Delphi:
1
2
3
4
5
6
7
procedure WMEraseBkGnd(var Message: TMessage); message WM_ERASEBKGND;

procedure TMyControl.WMEraseBkGnd(var Message: TMessage);
begin
  Canvas.Draw(ClientRect.Left, ClientRect.Top, JeBackgroundBitMap);
  Message.Result := 1;  // Afgehandeld
end;


Maar misschien moet je deze code in de Paint functie zetten, want ik weet niet zeker hoevaak dit message wordt gevuurt. Als je het helemaal in de Paint doet kan je er voor zorgen dat er helemaal nooit een erase background wordt gedaan door het volgende in de create van het component te zetten:
Delphi:
1
ControlStyle = ControlStyle + [ csOpaque ]


Ook moet je er voor zorgen dat dat component zichzelf er niet weer helemaal overheen tekent. OwnerDraw aan, DefaultDraw uit enzo.

Als dit allemaal klinkt als abba-ka-dabba voor je zou ik niet verder vragen en gewoon eerst zelf maar eens wat leren over het maken van VCL componenten en niet meer verder vragen. Het is niet de bedoeling dat we je aan het handje houden.

[ Voor 35% gewijzigd door LordLarry op 15-01-2003 15:27 ]

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
In de paint functie van me stringgrid bedoel je??

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

Ja. Je zal een afgeleide moeten maken van je TAdvStringGrid en daarin jouw nieuwe code zetten dmv het overriden van bepaalde functies zoals Paint.

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
IC... Dat zijn inderdaad geen dingen die ik al eerder heb gedaan en ik inderdaad geen kennis van het maken van VCL componenten. Suggesties waar ik die kan opdoen??

  • LordLarry
  • Registratie: Juli 2001
  • Niet online

LordLarry

Aut disce aut discede

De source code van de componenten die bij Delphi geleverd worden.
The Delphi Magazine of The Delphi Informant
De borland usnet news groups en www.tamaracka.com
Boeken
Verschillende Delphi sites
www.google.com

Veel success

We adore chaos because we like to restore order - M.C. Escher


Verwijderd

Topicstarter
Thnx!!! Ik ga daar eens naar kijken..
Pagina: 1