![]() |
Delphi-Version: 5
Verknüpfung StringGrid
Hallo alle zusammen!
Ich steht wiedermal vor einem Problem! Ich habe folgenden Quelltext:
Delphi-Quellcode:
Das Funktioniert auch also er Selektiert die gesuchten Zeilen.
function TForm1.GetStartCell(vehiclenum: integer; startdate: TDate): TPoint;
var ActCol, ActRow: integer; begin result := Point(-1, -1); for ActCol := 1 to Auftragseingabe.ColCount - 1 do begin if Auftragseingabe.Rows[0][ActCol] = DateToStr(startdate) then begin result.X := ActCol; for ActRow := 1 to Auftragseingabe.RowCount - 1 do begin if Auftragseingabe.Cols[0][ActRow] = 'LKW ' + IntToStr(vehiclenum) then begin result.Y := ActRow; break; end; end; break; end; end; end; procedure TForm1.Button1Click(Sender: TObject); var select: TGridRect; SelStart: TPoint; begin SelStart := GetStartCell(StrToIntDef(Fahrzeugnummer.Text, -1), StrToDate(Startdatum.Text)); if (SelStart.X > -1) and (SelStart.Y > -1) then begin select.Left := SelStart.X + StrToIntDef(Auftragslaenge.Text, 0) - 1; select.Right := SelStart.X; select.Top := SelStart.Y; select.Bottom := SelStart.Y; Auftragseingabe.Selection := select; end; end; Mein Problem ist ich möchte das er in diese Zeilen aus dem Editfeld "Kundennummer" den Eintrag schreibt. Also Im sinne von 'KundenNr. + Kundennummer.text' Dann hab ich noch einen 2 Quellcode.
Delphi-Quellcode:
Er makiert aber halt nur wie oben die Zelle 1 Spalte 1 Reihe!
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin with TStringGrid(Sender).Canvas do begin if (ACol=1) and (ARow=1) then begin Brush.Color:= clRed; FillRect(Rect); end; end; end; Ich möchte aber gerne das er die aus dem Quellcode der Selektierung ausgewählten felder Rot färbt und halt die Kundennummer rein schreibt. Wenn ich das jetzt aber versuche auf die selektierten Felder zu bringen dann färbt er auch alle die Felder ein die ich mit der Maus anklicke und das soll er nicht! Also hab ich mir gedacht diesen Brush befehl auf die ausgefüllten Felder mit dem Eintrag "KundenNr + Kundennummer.text" an zu wenden. Aber wie mach ich dieses? Vorstellen könnte ich mir das so:
Delphi-Quellcode:
Ich hoffe Ihr könnt mir helfen!
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin with TStringGrid(Sender).Canvas do begin if (stringgrid1.cell := 'Kundennr + "Kundennummer.text"') and (stringgrid1.row := 'Kundennr + "Kundennummer.text"') then begin Brush.Color:= clRed; FillRect(Rect); end; end; end; Gruß Sievo |
AW: Verknüpfung StringGrid
Du musst auch den Parameter State beachten:
Delphi-Quellcode:
PS: das ist nur eine Teillösung. Die markierte Zeile muss auch angepasst werden.
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); begin if State = [] then // NICHT Selected, Focused oder Fixed with TStringGrid(Sender).Canvas do begin if (ACol=1) and (ARow=1) then begin // <======= Brush.Color:= clRed; FillRect(Rect); end; end; end; |
AW: Verknüpfung StringGrid
Hmm
also ich hab mir jetzt überlegt die Zelle erst dann zu Färben wenn da 'KundenNr. + Kundennummer.text' drin steht. also müsste ich doch das state so setzen das da raus kommt:
Delphi-Quellcode:
Aber dazu müsste ich ja erstmal hinbekommen das die durch die eingabe selektierten Felder beschriftet werden mit 'KundenNr. + Kundennummer.text'.
IF state [Auftragseingabe.Drawtext := 'KundenNr. + Kundennummer.text']
then begin with TStringGrid(Sender).Canvas do begin if (ACol=1) and (ARow=1) then begin // <======= Brush.Color:= clRed; FillRect(Rect); end; end; end; oder ist sowas garnicht möglich? |
AW: Verknüpfung StringGrid
Delphi-Quellcode:
procedure TForm1.StringGrid1DrawCell(Sender: TObject; ACol, ARow: Integer;
Rect: TRect; State: TGridDrawState); var ZellenText : string; begin if State = [] then // NICHT Selected, Focused oder Fixed begin // erstmal aktuelle Zelle auslesen ZellenText := TStringGrid(Sender).Cells[ACol, ARow]; with TStringGrid(Sender).Canvas do begin // Prüfen, ob Zelle mit bestimmten Text beginnt if Copy(ZellenText, 1,9)= 'KundenNr.' then begin Brush.Color:= clRed; FillRect(Rect); end; end; end; end; |
AW: Verknüpfung StringGrid
Man Man Man ^^
Das klappt ja wie sau!! Vielen Dank!!!! Nur das ich halt nicht hinbekomme das in die selektierten Felder automatisch der Eintrag 'KundenNr. + Kundennummer.text' eingetragen wird. Mein obiger erster Quelltext.
Delphi-Quellcode:
Bedeutet ja sozusagen das diese felder Selektiert werden aber ich muss dann auch noch dazu in die felder eintragen 'KundenNr. + Kundennummer.text'.
begin
select.Left := SelStart.X + StrToIntDef(Auftragslaenge.Text, 0) - 1; select.Right := SelStart.X; select.Top := SelStart.Y; select.Bottom := SelStart.Y; Auftragseingabe.Selection := select; end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:19 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