![]() |
Re: In StringGrid-Zeilen mit einem Balken navigieren
Die vermeintlichen Änderungen sind bei mir so von D7 vorgegeben - du musst natürlich die von D3 vergebene Signatur benutzen. Ich wollte nur zeigen, wie die Bedingung formuliert werden muss um den von dir gewünschten gelben Balken zu erhalten. Bei D3 scheint der Header wegen der Überdeckung der Eigenschaften Col und Row mit den gleichnamigen Parametern noch nicht korrigiert worden zu sein. Du kannst die aktuellen Werte zwischenspeichern:
Delphi-Quellcode:
Immernoch beschleicht mich das Gefühl, dass du Spalten und Zeilen verwechselst. Du schreibst 8 feste Titelspalten und jede weitere Zeile...
procedure TFRechn.StringGridRedatDrawCell(Sender: TObject;
Col, Row: Integer; Rect: TRect; State: TGridDrawState); var aCol, aRow: Integer; begin aCol := Col; aRow := Row; with Sender As TStringGrid do begin if (ARow = Row) and (ACol >= FixedCols) then Canvas.Brush.Color := clYellow else Canvas.Brusch.Color := clWhite; Canvas.FillRect(Rect); end; end; marabu |
Re: In StringGrid-Zeilen mit einem Balken navigieren
Guten Abend marabu,
Deinen Code habe ich umgesetzt. Im StringGrid ist ein gelber Balken vorhanden, der auf Click in eine andere Zeile wechselt. Was ich jetzt vermisse, ist meine feste Titelleiste oben mit den Bezeichnungen der Spalten. FixedColor := clRed; Font.Color := clBlack;
Delphi-Quellcode:
Wie kommt bitte die Titelleiste mit den Bezeichnungen
procedure TFRechn.FormCreate(Sender: TObject);
begin with StringGridRedat do begin ColCount := 8; /Bezeichnung der Spalten RowCount := 1; Cells [0,0] := 'PosNr'; Cells [1,0] := 'Art-Nr'; Cells [2,0] := 'Bezeichnung'; ... Cells [7,0] := 'Gesamtpreis'; end; ins StringGrid? Ebenso kann ich dem StringGrid keine Artikeldaten hinzufügen. Die neuen Zeilen bleiben alle leer! Gute Nacht! |
Re: In StringGrid-Zeilen mit einem Balken navigieren
Hallo Lombi,
in Beitrag #4 hast du angegeben, dass du die Eigenschaft FixedRows auf null gesetzt hast. Diese Eigenschaft muss auf eins gesetzt werden, damit eine Titelzeile sichtbar ist. Eine Nebenbedingung ist, dass RowCount größer als FixedRows sein muss, sonst funktioniert das nicht. Was das Hinzufügen von Datenzeilen angeht musst du mal deinen aktuellen nicht funktionierenden Code zeigen. Grüße vom marabu |
Re: In StringGrid-Zeilen mit einem Balken navigieren
Hallo marabu,
bitte schau Dir mal die Demo an. Mit OnDrawCell werden meine Spalten- bezeichnungen nicht angezeigt. Gruß Lombi |
Re: In StringGrid-Zeilen mit einem Balken navigieren
Hallo Lombi,
du schreibst ja auch gar keinen Text raus. Hinter FillRect() gehört noch diese Zeile:
Delphi-Quellcode:
Durch FillRect() hast du die bereits ausgegebenen Texte wieder überpinselt. Deshalb nochmal mit TextRect() oder TextOut() ausgeben.
Canvas.TextRect(Rect, Rect.Left + 2, Rect.Top + 2, Cells[ACol, ARow]);
Grüße vom marabu |
Re: In StringGrid-Zeilen mit einem Balken navigieren
Hallo marabu!
zwei Kleinigkeiten fehlen noch in meinem StringGrid: 1.) RowCount := 2; FixedRows := 1; für die Titelzeile Beim Ausführen des Prog ist die Titelzeile und schon eine weitere Zeile vorhanden (RowCount:= 2), d.h. die Eingabe der ersten Artikel- position (über Edits) beginnt nicht unmittelbar unter der Titelzeile. 2.) Wie bitte bekomme ich FixedColor := clInfoBk; in die Titelzeile? Viele Grüße Lombi |
Re: In StringGrid-Zeilen mit einem Balken navigieren
Hallo Lombi,
dein zweites Problem ist am einfachsten zu lösen:
Delphi-Quellcode:
Bei deinem ersten Problem hilft nur ein eigenes book keeping. Du musst um die Optik zu erhalten einen eigenen RowCount pflegen und den RowCount des Grid nie unter 2 fallen lassen. Beim Löschen der letzten Zeile musst du dann die Cells von Row[1] alle leeren und beim Hinzufügen der ersten Zeile schreibst du deine Werte einfach in die bereits existierende Row[1].
procedure TDemoForm.StringGridDrawCell(Sender: TObject; ACol,
ARow: Integer; Rect: TRect; State: TGridDrawState); begin with Sender as TStringGrid do begin if (ARow < FixedRows) or (ACol < FixedCols) then Canvas.Brush.Color := clInfoBk else // ... end; end; Gute Nacht marabu |
Re: In StringGrid-Zeilen mit einem Balken navigieren
Verzweifelt suche ich noch nach einer Lösung für das eigene book keeping.
Die Procedure löscht die 1.Zeile im StringGrid, nimmt aber auch die Titel- zeile weg.
Delphi-Quellcode:
Gruß
procedure DeleteFirstRow(const: Grid : TStringGrid; RowNumber : Integer);
var i: Integer; begin for i := RowNumber to Grid.RowCount -2 do Grid.Rows[i].Assign(Grid.Rows [i -1]); Grid.Rows [Grid.RowCount -1].Clear; Grid.RowCount := Grid.RowCount-1; end; procedure TFRechn.BtnNeuClick(Sender: TObject); ... DeleteFirstRow(StringGridRedat, 1); ... Lombi |
Re: In StringGrid-Zeilen mit einem Balken navigieren
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo Lombi,
nicht verzweifeln. Ich habe dir eine Demo angehängt, die dir mit möglichst wenig Code das Prinzip zeigt. Hoffentlich kannst du sie unter D3 übersetzen. Grüße vom marabu |
Re: In StringGrid-Zeilen mit einem Balken navigieren
@marabu
Herzlichen Dank für Deine Demo.
Delphi-Quellcode:
Durch was muß ich bitte die markierte Stelle im Code ersetzen, um meine Kundendaten ins Grid zu bekommen?
procedure TFormKundenListe.BtnKundeNeuClick(Sender: TObject);
var s: TStrings; iCol: Integer; begin with FormKunden, QueryKunden, GridKunden do begin FormKunden.ShowModal; Append; FieldByName('Name1').AsString := EditName1.Text; ... if LineCount > 0 then begin iCol := Col; InsertRow(GridKunden, icol); Row := Pred(Row); end; *********************************************** for iCol := FixedCols to Pred(ColCount) do Cells[iCol, Row] := IntToStr(Random(90) + 10); SetFocus; ************************************************ end; LineCount := LineCount + 1; end; Beste Grüße Lombi |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:54 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