![]() |
Erscheinungsbild TDBgrid im Titel ändern
Liste der Anhänge anzeigen (Anzahl: 1)
:-D Hallo zusammen
Bitte um Ideen welche Möglichkeiten man hat das erscheinungsbild der im Delphi Standardmässigen Komponenente TDBGrid im Titel zu ändern. Mit dem event ondrawcolumncell kann man sich im Datenbereich ja mit eine wenig code so richtig austoben dass man keine fremdkomponente für ein modernes farbenfrohes erscheinungsbild braucht. Aber ich habe bis jetzt nichts gefunden wie man die "Buttons" in den Titel ändern kann. Man kann zwar mit der eigenschaft fixedcolour die farbe der Buttons ändern aber das ist es nicht wirklich :wall: Habe in der Anlage ein Bildschirmfoto eines grids wie ich mir das ungefähr vorstelle (Farbverlauf wäre schön wichtiger sind die plastischen Trennlinien) :mrgreen: Ich möchte keine fremdkomponente verwenden wie TMS oder DevExpress Grids da ich maximal kompatibel für spätere portierungen (.NET) bleiben möchte. Bin gespannt auf eure ideen :?: :?: :?: :wiejetzt: |
Re: Erscheinungsbild TDBgrid im Titel ändern
:?: :?: :!: :!: :?: :?:
Wenn jemand diesen Beitrag liest und der Meinung ist dass es nicht möglich ist in das Erscheinungsbild der Titelleiste der Trennlinien der selben und des Indikators des DbGrids einzugreifen wäre ich über einen Post trotzdem dankbar denn dann kann ich das Thema abhaken und eine andere Lösung suchen. Bin gespannt auf eure Meinungen :dp: :coder: :coder: :coder: |
Re: Erscheinungsbild TDBgrid im Titel ändern
Hi,
wenn du dein Grid einmal mit DefaultDrawing = FALSE anzeigen lässt, dann siehst du, was alles ohne dein Zutun gezeichnet wird - vorausgesetzt du hast den event handler für OnDrawColumnCell deaktiviert. An das Zeichnen der title row wirst du wohl keinen Griff dran bekommen, da die zuständige procedure DrawTitleCell() als local procedure von DrawCell() definiert ist. Mitfühlende Grüße vom marabu |
Re: Erscheinungsbild TDBgrid im Titel ändern
:| :| :wall:
trotzdem danke für deine antwort :cheers: |
Re: Erscheinungsbild TDBgrid im Titel ändern
:twisted:
habe mir gerade die komponente tdbgrid näher angeschaut die verantwortliche procedure schaut imho nicht allzu komplex aus wäre es möglich eine eigene klasse anzuleiten und die procedure
Delphi-Quellcode:
zu überschreiben und nach eigenen wünschen anzupassen oder ist das eine sisiphus aufgabe :?: :?: :?:
procedure TCustomDBGrid.DrawCell(ACol, ARow: Longint; ARect: TRect; AState: TGridDrawState);
var FrameOffs: Byte; function RowIsMultiSelected: Boolean; var Index: Integer; begin Result := (dgMultiSelect in Options) and Datalink.Active and FBookmarks.Find(Datalink.Datasource.Dataset.Bookmark, Index); end; procedure DrawTitleCell(ACol, ARow: Integer; Column: TColumn; var AState: TGridDrawState); const ScrollArrows: array [Boolean, Boolean] of Integer = ((DFCS_SCROLLRIGHT, DFCS_SCROLLLEFT), (DFCS_SCROLLLEFT, DFCS_SCROLLRIGHT)); var MasterCol: TColumn; TitleRect, TextRect, ButtonRect: TRect; I: Integer; InBiDiMode: Boolean; begin TitleRect := CalcTitleRect(Column, ARow, MasterCol); if MasterCol = nil then begin Canvas.FillRect(ARect); Exit; end; // geht noch weiter :coder2: |
Re: Erscheinungsbild TDBgrid im Titel ändern
Liste der Anhänge anzeigen (Anzahl: 1)
:twisted: :twisted:
und es geht doch :mrgreen: mit ein wenig knoff hoff und ein bisschen code kann man aus dem Standard Dbgrid wirklich einiges machen Das Bild in der Anlage zeigt die normale Komponente TDBGrid. |
Re: Erscheinungsbild TDBgrid im Titel ändern
Ist schön geworden - aber ohne source license wäre das ziemlich schwierig gewesen...
Freundliche Grüße vom marabu |
Re: Erscheinungsbild TDBgrid im Titel ändern
:mrgreen:
Hab am source nichts geändert wollte ja die vcl nicht umschreiben das grid liegt auf einem panel auf dem wiederum ein panel mit align top liegt der grid selbst dann align alclient und titles auf false. Anschliessend werden über eine schleife die plastichen titel dynamisch erzeugt und über die parant control an das panel oberhalb des grids gebunden. durch setzen des events on resize zur laufzeit kann ich sogar die breite der spalten des grids ändern :coder: :coder: :coder:
Delphi-Quellcode:
private
prGrPanels:Array[0..20] of TAdvPanel;
Delphi-Quellcode:
procedure TFmArtikelSystem.FormCreate(Sender: TObject);
var aComboListe:TStringList; i:Integer; begin for i:=0 to exDbGr.Columns.Count-1 do begin prGrPanels[i]:=FmDmHaupt.ErzTitelDbGrid(panGrTitel); prGrPanels[i].Width:=exDbGr.Columns[i].Width+1; prGrPanels[i].Text:=StringReplace(prGrPanels[i].Text,'@bez',' '+exDbGr.Columns[i].Title.Caption,[rfReplaceAll]); prGrPanels[i].Show; end; end;
Delphi-Quellcode:
:?: :?: dazu noch eine Frage muss ich mich persönlich darum kümmern die dynamisch erstellten
function TFmDmHaupt.ErzTitelDbGrid(pParent:TPanel): TAdvPanel;
var agrpan: TAdvPanel; begin agrpan := TAdvPanel.Create(Self); with agrpan do begin Parent := pParent; Align := alLeft; Color := clWindow; CanSize := False; Caption.Visible := False; Collaps := False; ColorTo := 14075590; Text := '<FONT size="10" face="MS Sans Serif">'+'@bez'+'</FONT>'; TextVAlign := tvaCenter; BevelWidth:=1; end; Result:=agrpan; end; komponenten mit free freizugeben oder wird das beim close des formulars (action ist bei mir cafree) automatisch von delphi erledigt |
Re: Erscheinungsbild TDBgrid im Titel ändern
Hi du Schlingel,
Zitat:
marabu |
Re: Erscheinungsbild TDBgrid im Titel ändern
Hallo zusammen,
bin neu hier und sage erstmal "Hallo" an alle. Bin beim stöbern hier im Forum auf diesen Artikel gestoßen und fand Ihn sehr gut. Da ich eigentlich aus einer anderen Programmiersprache komme, mich aber nun mit Delphi (2005) auseinandersetzen muss, würde ich 'etom291272' bitten, diese DBGridprogrammierung mal im Ganzen (als komplettes Projekt) ins Netz zu stellen. (Damit auch Delphi-Neulinge wie ich einen kleinen Einblick bekommen). vielen Dank im Voraus |
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:41 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