Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi StringGrid vergleichen! (https://www.delphipraxis.net/121064-stringgrid-vergleichen.html)

thiagojonas 21. Sep 2008 19:59


StringGrid vergleichen!
 
Hallo Jungs, ahbe da mal eine Frage!

Also ich habe zwei StringGrids ich möchte sie gerne wie folgt vergleichen!

Also wenn die markierte Row der ersten StringGrid = vorhanden in StringGrid 2 soll

eine Wert z.B. Die Zeit in die Gleiche Reihe in einer Spalte eingefügt werden!

Zb.

StringGrid 1

Nr. Name
001 Timo
002 Lasse -------markiert
003 Anna
004 Otto


StringGrid 2

Nr. Name
001 Timo
002 Lasse -------die Nr. ist hier gleich der markierten Nr.
003 Anna
004 Otto

also...


StringGrid 2

Nr. Name Zeit
001 Timo
002 Lasse 20:04 ---- z.B. Zeit einfügen
003 Anna
004 Otto

mkinzler 21. Sep 2008 20:00

Re: StringGrid vergleichen!
 
Könntest du die Frage so stellen, das jemand wie ich diese versteht?

pilic 21. Sep 2008 20:17

Re: StringGrid vergleichen!
 
Einfach nur die Zeilen der zweiten Stringgrids in einer For-Schleife mit der markierten vergleichen.

taaktaak 21. Sep 2008 20:19

Re: StringGrid vergleichen!
 
Hab's so verstanden, dass folgende zeilen die Lösung sein könnte (nur mal so hingetippt, nicht überprüft, nicht elegant und bestimmt optimierungsfähig):

Delphi-Quellcode:
procedure TForm1.XXXX;
var Txt2Find : String;
    Index   : Integer;

  function GetGrid2Index(Grid:TStringGrid;Txt2Find:String):Integer;
  var i : Integer;
  begin
    Result:=-1;
    with Grid do
      for i:=FixedRows to RowCount-1 do
        if Cells[1,i]=Txt2Find) then begin
          Result:=i;
          Break;
          end;
  end;

begin
  Txt2Find:=StringGrid1.Cells[1,StringGrid1.Row];
  Index  :=GetGrid2Index(StringGrid2,Txt2Find);
  if Index>-1 then StringGrid2.Cells[2,Index]:=Now
end;

toms 21. Sep 2008 20:19

Re: StringGrid vergleichen!
 
Hallo

Was sind nun die konkreten Fragen?

Konkrete Fragen wären z.B

- Wie ermittle ich, was in einer TStringGrid Zelle steht?
- Wie ermittle ich, wie viele Zeilen ein TStringGrid hat?
- Wie Suche ich in einem Stringgrid?

Wenn diese Fragen beantwortet sind, hast du doch schon fast die Lösung, nicht wahr?

thiagojonas 21. Sep 2008 20:48

Re: StringGrid vergleichen!
 
Also...
Guck Euch den Link an, sucht euch Werte für die Combobox aus und klickt auf "Start"! Dann sucht ihr euch oben links in de DataGrid eine Spalte und klickt auf "Landung".
Unten wird dann die Zeit eingefügt, dort bei den gleichen Nr. die man oben ausgewaählt hat.
Dieses Programm aheb ich in Flash geschrieben, möchte aber das ganze in Delphi schreiben!
Ich hoffe ihr versteht mich jetzt!
HIer der Link!

http://www.thiago-jonas.de/Tower%20Manager.swf

DAnke:-)

thiagojonas 21. Sep 2008 21:54

Re: StringGrid vergleichen!
 
??? :-D

toms 22. Sep 2008 05:42

Re: StringGrid vergleichen!
 
Dann halt nochmals:

Zitat:

Zitat von toms
Was sind nun die konkreten Fragen?

Konkrete Fragen wären z.B

- Wie ermittle ich, was in einer TStringGrid Zelle steht?
- Wie ermittle ich, wie viele Zeilen ein TStringGrid hat?
- Wie Suche ich in einem Stringgrid?

Wenn diese Fragen beantwortet sind, hast du doch schon fast die Lösung, nicht wahr?


thiagojonas 22. Sep 2008 12:54

Re: StringGrid vergleichen!
 
Wie ermittle ich, was in einer TStringGrid Zelle steht? ?

DeddyH 22. Sep 2008 12:55

Re: StringGrid vergleichen!
 
Das steht in StringGrid.Cells[Spalte, Zeile]

thiagojonas 22. Sep 2008 13:54

Re: StringGrid vergleichen!
 
Äh... Sorry!
Ich meine:
Wie ermittle ich, wie viele Zeilen ein TStringGrid hat?

toms 22. Sep 2008 13:56

Re: StringGrid vergleichen!
 
Zitat:

Zitat von thiagojonas
Äh... Sorry!
Ich meine:
Wie ermittle ich, wie viele Zeilen ein TStringGrid hat?

Delphi-Quellcode:
TStringGrid.Rows.Count

thiagojonas 22. Sep 2008 14:15

Re: StringGrid vergleichen!
 
Danke!:-)
und Wie ermittle ich, wie viele Zeilen ein TStringGrid hat?

toms 22. Sep 2008 14:16

Re: StringGrid vergleichen!
 
Das ist doch schon die gleiche Frage wie oben :? :? :?: :?

taaktaak 22. Sep 2008 14:23

Re: StringGrid vergleichen!
 
Es wäre angeraten, dass du meinen Beitrag #4 beachten würdest.
Da sind die Antworten bereits gegeben :!:

thiagojonas 22. Sep 2008 14:34

Re: StringGrid vergleichen!
 
Danke hast Recht!War ein bisschen blind:-).
Kurze Frage noch! Der Wert wird einfach in die Spalte an erster Stelle gesetzt, nicht in der Reihe wo die Nummer identisch sind! Was muss ich dabei beachten?

Wie kann ich dann eine makierte Reihe aus der StringGrid löschen?

Danke :-D

DeddyH 22. Sep 2008 14:35

Re: StringGrid vergleichen!
 
Bei einem StringGrid entfernt man bzw. fügt neue Zeilen hinzu, indem man RowCount neu setzt.

taaktaak 22. Sep 2008 14:57

Re: StringGrid vergleichen!
 
Zitat:

Der Wert wird einfach in die Spalte an erster Stelle gesetzt, nicht in der Reihe wo die Nummer identisch sind!
Das sollte eigentlich nicht der Fall sein! Dafür wird in der lokalen Funktion der Zeilenindex des zweiten Stringgrids ermittelt.

Falls du es noch nicht selbst gefunden hast -
Die schließende Klammer nach "Txt2Find" darf da natürlich nicht hin und muss gelöscht werden:
Delphi-Quellcode:
if Cells[1,i]=Txt2Find) then begin

alzaimar 22. Sep 2008 15:12

Re: StringGrid vergleichen!
 
Ich will nicht unverschämt erscheinen, aber wäre ein Hinweis auf die Taste 'F1' nicht angebracht? Man klickt ein Stringgrid an und drückt die F1-Taste. Bupps, geht die sogenannte 'Online-Hilfe' auf. Dort kann man sich über Eigenschaften, Methoden und Ereignisse informieren. Dort ist sogar

Auch immer wieder beliebt und hilfreich ist ein Verweis auf die bei Delphi beigelegten 'Demos'. Auch dort sollte sich ein Beispielprojekt mit einem TStringGrid finden. Zugegeben, man muss schon suchen.

thiagojonas 22. Sep 2008 19:30

Re: StringGrid vergleichen!
 
Zitat:

Zitat von alzaimar
Ich will nicht unverschämt erscheinen, aber wäre ein Hinweis auf die Taste 'F1' nicht angebracht? Man klickt ein Stringgrid an und drückt die F1-Taste. Bupps, geht die sogenannte 'Online-Hilfe' auf. Dort kann man sich über Eigenschaften, Methoden und Ereignisse informieren. Dort ist sogar

Auch immer wieder beliebt und hilfreich ist ein Verweis auf die bei Delphi beigelegten 'Demos'. Auch dort sollte sich ein Beispielprojekt mit einem TStringGrid finden. Zugegeben, man muss schon suchen.

Hey, nein kein Ding! Danke für dein Tipp! :-)

thiagojonas 22. Sep 2008 19:31

Re: StringGrid vergleichen!
 
Zitat:

Zitat von taaktaak
Zitat:

Der Wert wird einfach in die Spalte an erster Stelle gesetzt, nicht in der Reihe wo die Nummer identisch sind!
Das sollte eigentlich nicht der Fall sein! Dafür wird in der lokalen Funktion der Zeilenindex des zweiten Stringgrids ermittelt.

Falls du es noch nicht selbst gefunden hast -
Die schließende Klammer nach "Txt2Find" darf da natürlich nicht hin und muss gelöscht werden:
Delphi-Quellcode:
if Cells[1,i]=Txt2Find) then begin

Hi klar habe ich gefunden! Hier der Code:

Delphi-Quellcode:
procedure TForm1.land_btnClick(Sender: TObject);
var Txt2Find : String;
    Index   : Integer;

function GetGrid2Index(Grid:TStringGrid;Txt2Find:String):Integer;
var i : Integer;
begin
  Result:=-1;
with Grid do
      for i:=FixedRows to RowCount-1 do
        if (fligths_dg.Cells[1,i]= Txt2Find) then begin
          Result:=i;
          Break;
          end;
  end;

begin
  Txt2Find:=air_dg.Cells[1,air_dg.Row];
  Index  :=GetGrid2Index(fligths_dg,Txt2Find);
  if Index>-1 then fligths_dg.Cells[6,Index] := FormatDateTime('hh:mm',now);
end;

thiagojonas 23. Sep 2008 13:53

Re: StringGrid vergleichen!
 
??? :angel:

taaktaak 23. Sep 2008 13:55

Re: StringGrid vergleichen!
 
What's your message? :glaskugel:

thiagojonas 23. Sep 2008 13:57

Re: StringGrid vergleichen!
 
Hi! Du wasrt ja derjenige, der so nett war, mir diesen Code zu schreiben! Danke :-D

Leider wie schon oben erwähnt, funktionert er nicht wirklich! Weißt Du woran das liegt?

taaktaak 23. Sep 2008 13:58

Re: StringGrid vergleichen!
 
Hi - was konkret funktioniert denn nicht?

thiagojonas 23. Sep 2008 13:58

Re: StringGrid vergleichen!
 
Warte ich schicke dir eine Demo!

thiagojonas 23. Sep 2008 14:07

Re: StringGrid vergleichen!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hier! Bitteschön! :-)

thiagojonas 23. Sep 2008 18:47

Re: StringGrid vergleichen!
 
:pale: Kann mir den niemand weiterhelfen??? :?:

taaktaak 23. Sep 2008 20:51

Re: StringGrid vergleichen!
 
Hallo thiagojonas,
ein wenig Geduld musst du schon haben; wir haben so ganz nebenbei auch noch Studium, Beruf, Familie etc. :warn:

Tja, und mit dem was du da übergeben hast, kann ich nun leider gar nix anfangen. Ich gehe mal davon aus, dass es auch in moderneren Delphi-Versionen als meinem Delphi7 noch so etwas wie PAS-Dateien etc. gibt - da schau doch bitte noch mal ... :roll:

thiagojonas 23. Sep 2008 21:16

Re: StringGrid vergleichen!
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi ja sorry!War nicht so gemeint! :-)
Also Du hast doch die Exe. und der Code ist hier im Forum! Habe Turbo Delphi!
Ich lade Dir nochmal die Exe. Hier hoch. Weiteres siehe Threads über den hier!
Wenn der Wert verglichen ist, soll die makierte Reihe im ober StringGrid entfernt werden.

thiagojonas 25. Sep 2008 13:16

Re: StringGrid vergleichen!
 
Ich habe eine FixedRow,spielt das eine Rolle?

taaktaak 25. Sep 2008 18:13

Re: StringGrid vergleichen!
 
Tja, und nun?
Ich stelle fest, dass das Programm nicht anforderungsgemäß funktioniert.
Ohne den kompletten Source kann ich dir nix dazu sagen :|
Also, wenn du's nicht selbst auflösen kannst, dann musst du uns den mal zur Verfügung stellen - anders geht das nicht.

thiagojonas 25. Sep 2008 18:20

Re: StringGrid vergleichen!
 
Delphi-Quellcode:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, Grids, StdCtrls;

type
  TForm1 = class(TForm)
    air_dg: TStringGrid;
    fligths_dg: TStringGrid;
    Button1: TButton;
    Button2: TButton;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
    flugnummer: integer;
    function getFlugNummer: string;
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function TForm1.getFlugNummer: string;
begin
    result := format('%3.3d',[flugnummer + 1]);
end;

procedure TForm1.Button1Click(Sender: TObject);
var Txt2Find : String;
    Index   : Integer;

function GetGrid2Index(Grid:TStringGrid;Txt2Find:String):Integer;
var i : Integer;
begin
  Result:=-1;
with Grid do
      for i:=FixedRows to RowCount-1 do
        if (fligths_dg.Cells[1,i]= Txt2Find) then begin
          Result:=i;
          Break;
          end;
  end;

begin
  Txt2Find:=air_dg.Cells[1,air_dg.Row];
  Index  :=GetGrid2Index(fligths_dg,Txt2Find);
  if Index>-1 then fligths_dg.Cells[5,Index] := FormatDateTime('hh:mm',now);
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
if air_dg.Cells[air_dg.FixedCols,Pred(air_dg.RowCount)] <> '' then
    air_dg.RowCount := Succ(air_dg.RowCount);
    air_dg.Cells[air_dg.FixedCols,Pred(air_dg.RowCount)] := getFlugNummer;
    air_dg.Cells[1,Pred(air_dg.RowCount)] := 'Hallo';
    air_dg.Cells[2,Pred(air_dg.RowCount)] := 'Rainer';
    air_dg.Cells[3,Pred(air_dg.RowCount)] := 'Horst';

 if fligths_dg.Cells[fligths_dg.FixedCols,Pred(fligths_dg.RowCount)] <> '' then
    fligths_dg.RowCount := Succ(fligths_dg.RowCount);
    fligths_dg.Cells[fligths_dg.FixedCols,Pred(fligths_dg.RowCount)] := getFlugNummer;
    fligths_dg.Cells[1,Pred(fligths_dg.RowCount)] := 'Hallo';
    fligths_dg.Cells[2,Pred(fligths_dg.RowCount)] := 'Rainer';
    fligths_dg.Cells[3,Pred(fligths_dg.RowCount)] := 'Horst';
    fligths_dg.Cells[4,Pred(fligths_dg.RowCount)] := FormatDateTime('hh:mm',now);
    fligths_dg.Cells[6,Pred(fligths_dg.RowCount)] := '';
   
  inc(flugnummer);
end;

end.
Meinst Du den? :-D

taaktaak 25. Sep 2008 18:24

Re: StringGrid vergleichen!
 
Joo, ich schau mir das nachher mal an

thiagojonas 25. Sep 2008 18:28

Re: StringGrid vergleichen!
 
Danke! :-D

taaktaak 25. Sep 2008 18:57

Re: StringGrid vergleichen!
 
Liste der Anhänge anzeigen (Anzahl: 1)
So,
wenn ich das richtig erfasst habe, dann ist der eigentliche Code schon OK. Deine Testdaten waren nicht geeignet: Es wird immer die Spalte 1 (das ist die ZWEITE, da Zählung bei 0 beginnt) verglichen; da steht bei dir immer nur HALLO drin - für den Test also ungeeignet. Habe das mal ein bisschen anders gemacht. Anbei Source in schlimmer Fomatierung.

thiagojonas 25. Sep 2008 19:47

Re: StringGrid vergleichen!
 
Super Danke das wars!:-)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:25 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