AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Verknüpfung StringGrid

Ein Thema von Sievo · begonnen am 27. Sep 2010 · letzter Beitrag vom 27. Sep 2010
Antwort Antwort
Sievo

Registriert seit: 24. Sep 2010
Ort: 48480 Spelle
21 Beiträge
 
Turbo Delphi für Win32
 
#1

Verknüpfung StringGrid

  Alt 27. Sep 2010, 13:29
Delphi-Version: 5
Hallo alle zusammen!

Ich steht wiedermal vor einem Problem!

Ich habe folgenden Quelltext:

Delphi-Quellcode:
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;
Das Funktioniert auch also er Selektiert die gesuchten Zeilen.

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:
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;
Er makiert aber halt nur wie oben die Zelle 1 Spalte 1 Reihe!
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:
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;
Ich hoffe Ihr könnt mir helfen!

Gruß Sievo
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#2

AW: Verknüpfung StringGrid

  Alt 27. Sep 2010, 13:34
Du musst auch den Parameter State beachten:
Delphi-Quellcode:
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;
PS: das ist nur eine Teillösung. Die markierte Zeile muss auch angepasst werden.
Andreas
  Mit Zitat antworten Zitat
Sievo

Registriert seit: 24. Sep 2010
Ort: 48480 Spelle
21 Beiträge
 
Turbo Delphi für Win32
 
#3

AW: Verknüpfung StringGrid

  Alt 27. Sep 2010, 13:47
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:
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;
Aber dazu müsste ich ja erstmal hinbekommen das die durch die eingabe selektierten Felder beschriftet werden mit 'KundenNr. + Kundennummer.text'.
oder ist sowas garnicht möglich?
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#4

AW: Verknüpfung StringGrid

  Alt 27. Sep 2010, 14:05
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;
Andreas
  Mit Zitat antworten Zitat
Sievo

Registriert seit: 24. Sep 2010
Ort: 48480 Spelle
21 Beiträge
 
Turbo Delphi für Win32
 
#5

AW: Verknüpfung StringGrid

  Alt 27. Sep 2010, 14:17
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:
 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;
Bedeutet ja sozusagen das diese felder Selektiert werden aber ich muss dann auch noch dazu in die felder eintragen 'KundenNr. + Kundennummer.text'.

Geändert von Sievo (27. Sep 2010 um 14:21 Uhr)
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz