![]() |
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 |
Re: StringGrid vergleichen!
Könntest du die Frage so stellen, das jemand wie ich diese versteht?
|
Re: StringGrid vergleichen!
Einfach nur die Zeilen der zweiten Stringgrids in einer For-Schleife mit der markierten vergleichen.
|
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; |
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? |
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! ![]() DAnke:-) |
Re: StringGrid vergleichen!
??? :-D
|
Re: StringGrid vergleichen!
Dann halt nochmals:
Zitat:
|
Re: StringGrid vergleichen!
Wie ermittle ich, was in einer TStringGrid Zelle steht? ?
|
Re: StringGrid vergleichen!
Das steht in StringGrid.Cells[Spalte, Zeile]
|
Re: StringGrid vergleichen!
Äh... Sorry!
Ich meine: Wie ermittle ich, wie viele Zeilen ein TStringGrid hat? |
Re: StringGrid vergleichen!
Zitat:
Delphi-Quellcode:
TStringGrid.Rows.Count
|
Re: StringGrid vergleichen!
Danke!:-)
und Wie ermittle ich, wie viele Zeilen ein TStringGrid hat? |
Re: StringGrid vergleichen!
Das ist doch schon die gleiche Frage wie oben :? :? :?: :?
|
Re: StringGrid vergleichen!
Es wäre angeraten, dass du meinen Beitrag #4 beachten würdest.
Da sind die Antworten bereits gegeben :!: |
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 |
Re: StringGrid vergleichen!
Bei einem StringGrid entfernt man bzw. fügt neue Zeilen hinzu, indem man RowCount neu setzt.
|
Re: StringGrid vergleichen!
Zitat:
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
|
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. |
Re: StringGrid vergleichen!
Zitat:
|
Re: StringGrid vergleichen!
Zitat:
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; |
Re: StringGrid vergleichen!
??? :angel:
|
Re: StringGrid vergleichen!
What's your message? :glaskugel:
|
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? |
Re: StringGrid vergleichen!
Hi - was konkret funktioniert denn nicht?
|
Re: StringGrid vergleichen!
Warte ich schicke dir eine Demo!
|
Re: StringGrid vergleichen!
Liste der Anhänge anzeigen (Anzahl: 1)
Hier! Bitteschön! :-)
|
Re: StringGrid vergleichen!
:pale: Kann mir den niemand weiterhelfen??? :?:
|
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: |
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. |
Re: StringGrid vergleichen!
Ich habe eine FixedRow,spielt das eine Rolle?
|
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. |
Re: StringGrid vergleichen!
Delphi-Quellcode:
Meinst Du den? :-D
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. |
Re: StringGrid vergleichen!
Joo, ich schau mir das nachher mal an
|
Re: StringGrid vergleichen!
Danke! :-D
|
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. |
Re: StringGrid vergleichen!
Super Danke das wars!:-)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:14 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