Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Stringgrid Zeileweise abarbeiten (https://www.delphipraxis.net/125026-stringgrid-zeileweise-abarbeiten.html)

capo 29. Nov 2008 12:17


Stringgrid Zeileweise abarbeiten
 
Hallo,

ich habe ein Stringgrid in dem stehen URL's und die möchte ich Zeilenweise abarbeiten.
Also nach dem Prinzip:
Rufe URL auf, warte auf das Ergebnis (das Ergebnis ist ein Wort im Quelltext des Webbrowsers) und arbeite dann erst die nächste URL ab.
Wie kann ich das am besten machen?

Gruss vom Capo

Sir Rufo 29. Nov 2008 12:18

Re: Stringgrid Zeileweise abarbeiten
 
Möchtest du den internen Webbrowser benutzen oder den externen?

capo 29. Nov 2008 12:20

Re: Stringgrid Zeileweise abarbeiten
 
Ich verwende den EmbeddedWB von http://bsalsa.com/ (also intern)

[EDIT] und wenn dann die letzte Zeile abgearbeitet ist soll er wieder von vorne beginnen.

capo 29. Nov 2008 14:22

Re: Stringgrid Zeileweise abarbeiten
 
Theoretisch würde es mir auch schon reichen "manuel" eine Zeile weiter zu rücken.
Wenn am Ende angelangt wieder mit der ersten Zeile zu beginnnen.

Sir Rufo 29. Nov 2008 16:17

Re: Stringgrid Zeileweise abarbeiten
 
Hmm, was ist denn jetzt das Problem?

Das Lesen aus dem StringGrid oder das Abwarten bis der WebBrowser was gemeldet hat?

cu

Oliver

capo 29. Nov 2008 16:24

Re: Stringgrid Zeileweise abarbeiten
 
Das Problem ist zur nächsten Zeile im Stringgrid zu springen um die URL auszulesen.
Das nächste Problem ist wenn ich am Ende des Stringgrids angekommen bin wieder in der ersten zeile zu beginnen.
Ich will das nicht in einer Schleife machen...weilich auf den Webbrowser warten will.

DeddyH 29. Nov 2008 16:27

Re: Stringgrid Zeileweise abarbeiten
 
Dann frag doch einfach StringGrid.Row ab, lies die Zelle aus und setze Row einen weiter.

capo 29. Nov 2008 16:31

Re: Stringgrid Zeileweise abarbeiten
 
genau das ist es ja, mein Problem, wie mache ich das.

Sir Rufo 29. Nov 2008 16:33

Re: Stringgrid Zeileweise abarbeiten
 
ja, oder so:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    ...
    StringGrid1 : TStringGrid;
    ...
  private
    ...
    FHierBinIchGerade : integer; // <--- sollte natürlich im OnCreate noch initialisiert werden (z.B. mit 0)
    ...
    function LeseDieNaechsteZeile : string;
  end;

...

function LeseDieNaechsteZeile : string;
begin
  FHierBinIchGerade := FHierBinIchGerade + 1;
  if
    ( FHierBinIchGerade > StringGrid1.RowCount )
  then
    FHierBinIchGerade := 0;
  Result := StringGrid1.Cells[ 0, FHierBinIchGerade ];
end;

toms 29. Nov 2008 16:39

Re: Stringgrid Zeileweise abarbeiten
 
Delphi-Quellcode:
function LeseDieNaechsteZeile(StringGrid: TStringGrid): string;
begin
  with StringGrid do
  begin
    Row := (Row + 1) mod RowCount; // Zur nächsten Zeile springen
    Result := Cells[1, Row];      // Wert von aktueller Zeile / Spalte 1 auslesen
  end;
end;

DeddyH 29. Nov 2008 16:43

Re: Stringgrid Zeileweise abarbeiten
 
Das nenne ich mal eine elegante Lösung :thumb:

capo 29. Nov 2008 16:54

Re: Stringgrid Zeileweise abarbeiten
 
Danke für eure Hilfe. Wie kann ich dann feststellen ob ich in der letzten Zeile bin und dann wieder in die erste Zeile springen?

toms 29. Nov 2008 16:55

Re: Stringgrid Zeileweise abarbeiten
 
Zitat:

Zitat von capo
Danke für eure Hilfe. Wie kann ich dann feststellen ob ich in der letzten Zeile bin und dann wieder in die erste Zeile springen?

Das macht LeseDieNaechsteZeile() schon

capo 29. Nov 2008 16:58

Re: Stringgrid Zeileweise abarbeiten
 
Danke.... :dance:

capo 29. Nov 2008 17:56

Re: Stringgrid Zeileweise abarbeiten
 
Hi toms,
merkwürdig aber der bleibt in der letzten Zeile stehen.
gruss vom Capo

DeddyH 29. Nov 2008 18:17

Re: Stringgrid Zeileweise abarbeiten
 
Dann versuch es mal mit der langen Version:
Delphi-Quellcode:
function LeseDieNaechsteZeile(const StringGrid: TStringGrid; aCol: integer = 1): string;
var aRow: Integer;
begin
  aRow := StringGrid.Row;
  if aRow < Pred(StringGrid.RowCount) then
    Inc(aRow)
  else
    aRow := StringGrid.FixedRows;
  StringGrid.Row := aRow;
  Result := StringGrid.Cells[aCol,aRow];
end;

capo 29. Nov 2008 18:31

Re: Stringgrid Zeileweise abarbeiten
 
Ja, damit hat es geklappt, muss mir aber noch die Unterschiede ansehen. Danke


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