Autor Beitrag
Sievo
Hält's aus hier
Beiträge: 15



BeitragVerfasst: Sa 25.09.10 18:38 
Hi also ich habe ein Problem!

Und zwar möchte ich Daten über Editfelder in einer StringGrid Tabelle anzeigen!
Mein Problem ist das ich nicht weiß wie ich die verknüpfungen und wie genau die schleife aussehen soll!

Ich stell mir das als Trockenübung so vor! (Am besten den Screenshot dazu nehmen!!)

Ich gebe die Fahrzeugnummer ein und es wird überprüft welche zeile dieses Fahruzeug hat.
Dann nehm ich das Startdatum und es wird überprüft wo dieses Startdatum sich mit der Zeile des Fahrzeuges schneidet.
Dann wird dieses datum + die Gesamtdauer - 1 genommen und der Bereich wird markiert!
Die Zellen werden Verbunden und es wird die Kundennummer ins "Große-Feld" geschrieben!

Also so denk ich mir das aber mir fehlt das wissen so eine schleife zu bauen! Ich habe mich schon durch verschiedene tutorials gequält aber so eine verbindung hab ich leider nicht gefunden!

Ich wäre sehr dankbar wenn mir jemand bei so einer schleife helfen und sie auch erklären kann!

Vielen Dank

Gruß

Sievo!
Einloggen, um Attachments anzusehen!
MaPsTaR
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 90
Erhaltene Danke: 4

Win XP
Delphi 7 Enterprise
BeitragVerfasst: So 26.09.10 10:38 
Hoffe, ich habe das richtig verstanden, dass du eine Schleife suchst, um die gesuchten Zellen zu markieren.

ausblenden volle Höhe Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
function TForm1.GetStartCell(vehiclenum: integer; startdate: TDate): TPoint;
var ActCol, ActRow: integer;
begin
  result := Point(-1, -1);
  for ActCol := 1 to StringGrid1.ColCount - 1 do
  begin
    if StringGrid1.Rows[0][ActCol] = DateToStr(startdate)
    then
    begin
      result.X := ActCol;
      for ActRow := 1 to StringGrid1.RowCount - 1 do
      begin
        if StringGrid1.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(EVehicleNum.Text, -1), StrToDate(EStartDate.Text));
  if (SelStart.X > -1and (SelStart.Y > -1)
  then
  begin
    // Spalte Right bis Left markieren
    select.Left := SelStart.X + StrToIntDef(EDays.Text, 0) - 1;
    select.Right := SelStart.X;
    // Zeile Top bis Bottom markieren
    select.Top := SelStart.Y;
    select.Bottom := SelStart.Y;
    StringGrid1.Selection := select;
  end;
end;


Nach dem Vorgehen um Zellen zu verbinden, scheinst du bei deiner Recherche aber nicht gesucht zu haben, bist nicht wirklich der erste, der sich dafür interessiert...
Google: Delphi Stringgrid Zellen verbinden

_________________
Liebe Kinder, es stimmt ... solnage auch nur der ertse und lezte Bchutsabe rihctig ist und alle andreen Bcuhsatben irgendwie vorahnden sind,
dann knan man es dennonch lesen, also macht nur weiter so, wir verstehen euch schon
Sievo Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 26.09.10 11:43 
Okay vielen Dank!

Hmm hab ich garnet gesehen hab dann wohl immer nach dem falschem Gesucht! Weil da steht in der Google Suche auch genau drin wie ich Zeilen Farblich markiere!

Zu deinem Quellcode ich verstehe die procedure aber die function ist mir noch ein wenig unklar!
Bin halt leider kein Delphi-Pro :(

Kann mir die vllt einer erklären wenn es keine Umstände macht?
Sonst würd ich einfach mal gucken was mein Handbuch hergibt ;)

Aber Vielen Dank!!!

Werd e sofort ausprobieren!!
Sievo Threadstarter
Hält's aus hier
Beiträge: 15



BeitragVerfasst: So 26.09.10 21:23 
Hey erstmal Vielen Dank!

Funktioniert auch soweit!

Nu leider springt er nicht zu dem Feld welches selektiert wurde!

Kann man soetwas vllt machen das der selektierte Bereich Angezeigt wird?
Und wie bekomm ich es hin das die markierten Felder mit einer Farbe hinterlegt werden und aus einem weiterem Edit-Feld etwas in die Zellen geschrieben wird?