Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi CheckLISTBOX (https://www.delphipraxis.net/6310-checklistbox.html)

Zero1 6. Jul 2003 13:02


CheckLISTBOX
 
also wenn jemand bei der checklistbox etwas ankreuzt sollen ja dann diese commands ausgeführt werden die er angekreuzt hat ! wie kann ich machen das nicht alle commands aufeinmal ausgelöst werden sondern wenn command1 finish is kommt command2 ....etc ?

Delphi-Quellcode:
procedure TaMain.btnGoClick(Sender: TObject);
begin
 if aoption.cbox1.Checked[3]
  then write1.click;
 if aoption.cbox1.Checked[4]
  then write2.click;
 if aoption.cbox1.Checked[5]
  then write3.click;
 if aoption.cbox1.Checked[6]
  then write4.click;
 if aoption.cbox1.Checked[7]
  then write5.click;
end;
greez zero1

[Edit=Sakura]Überschrift editiert.[/Edit]

Daniel B 6. Jul 2003 13:20

Hallo,

mit einem "case".

Grüsse, Daniel :hi:

Hansa 6. Jul 2003 13:23

oder mit der schönen
Code:
else
:mrgreen:

Christian Seehase 6. Jul 2003 13:30

Moin Zusammen,

also ich kann da keinen Fehler sehen.

Sind z.B. die CheckBoxen [3] und [5] markiert, wird erst Write1.Click aufgerufen und kehrt irgendwann zurück. Dann wird [4] geprüft, nicht markiert, [5] geprüft, markiert, Write3.Click wird ausgeführt.

Das wäre also zumindest der Ablauf, wie er beschrieben wurde.

Zero1 6. Jul 2003 14:11

joooo fehler is ja auch keiner aber die commands gehen alle übern twebbrowser ! wenn browser fertig geladen hat soll der nexte command kommen ..etc

greez Zero1

Stanlay Hanks 6. Jul 2003 14:25

Schau dir mal die TWebBrowser Eigenschaft OnDocumentComplete an. Vielleicht is das das, was du brauchst.

Man liest sich, Stanlay :hi:

Zero1 6. Jul 2003 14:46

bsp? *grins*

greez zero1

Zero1 6. Jul 2003 19:27

Re: CheckLISTBOX
 
Delphi-Quellcode:
if aoption.cbox1.Checked[3]
 then write1.click
else if aoption.cbox1.Checked[4]
 then write2.click
else if aoption.cbox1.Checked[5]
 then write3.click
else if aoption.cbox1.Checked[6]
 then write4.click
else if aoption.cbox1.Checked[7]
 then write5.click
habs jetzte mal so probiert aber nun is das prob : wenn ich 3 von denen ankreuze nimmt er mir immer nur das erste den rest vergisst er :(

weis jemand weida??

greez zero1

Stanlay Hanks 6. Jul 2003 19:32

Re: CheckLISTBOX
 
Is ja klar. Es wird solange nach einen wahren Wert (=true) gesucht, bis einer gefunden wird. Dann is das ganze zu Ende und die restlichen else werden ignoriert. Ich würde das ganze ins Ondocumentcomplete ereignis packen und mit einer Variablen hochzählen, bei welchem CheckListboxItem du grade bist.

Man liest sich, Stanla :hi:

Zero1 6. Jul 2003 19:51

Re: CheckLISTBOX
 
kannst das mal genauer erklären mit "Ondocumentcomplete" ??

oder n kleines sample dazu?

wäre echt toll!

danke

greez zero1

Christian Seehase 6. Jul 2003 20:00

Re: CheckLISTBOX
 
Moin Zero,

OnDocumentComplete ist in der Hilfe samt Beispiel eigentlich recht gut beschrieben.

Du könntest es dazu verwenden, ein Flag zu setzen.

Ich stelle mir das so vor:
In der jeweiligen Write-Routine wird ein Flag gesetzt, dass jetzt ein neues Dokument geladen werden soll.
Nachdem das Laden angestossen wurde, wird kommt eine While Schleife, bei der die Abbruchbedingung das zurückgesetzte Flag ist.
In der Schleife selber empfiehlt sich Application.ProcessMessages, damit das Programm nicht einfriert.

In OnDocumentComplete wird nun schliesslich das Flag zurückgetzt.
Dadurch wird die Write Schleife verlassen, und die Write Routine ist abgearbeitet.

Stanlay Hanks 6. Jul 2003 20:07

Re: CheckLISTBOX
 
Also. Im ObjektInspektor gibt es beim TWebBrowser ein Event, das heißt OnDeocumentComplete. Die Hilfe sagt dazu folgendes:

Zitat:

Zitat von OnlineHilfe
In der Ereignisbehandlungsroutine für OnDocumentComplete können Sie Aktionen durchführen, wenn ein Frame oder Dokument vollständig in die TWebBrowser
-Komponente geladen ist. Bei einem Dokument ohne Frames wird dieses Ereignis nur einmal ausgelöst, nachdem das Dokument vollständig geladen wurde. Bei einem Dokument mit mehreren Frames wird das Ereignis einmal pro Frame und dann noch einmal nach dem Laden des gesamten Dokuments ausgelöst.

Ich würde das so machen:

Delphi-Quellcode:
var cur : Integer;
begin
 Case cur of
 0 : begin
     IF CheckListbox1.Checked[cur]
     THEN
     Procedure1; //Prozedur 1 wird ausgeführt, wenn ein Haken davor steht
     Inc(cur); //Cur wird um 1 erhöht.
     end;
 1 : begin
     IF CheckListbox2.Checked[cur]
     THEN
     Procedure2
     Inc(cur)

... usw ...
Wenn du das jetzt ins OnDocumentComplete Ereignis des WebBrowsers schreibst, wird jedesmal, wenn die/oder eine andere Seite fertig geladen ist, die nächste Prozedur ausgefährt.

Zero1 6. Jul 2003 20:38

Re: CheckLISTBOX
 
werds mal testen! many thx!!

greez Zero1

Zero1 6. Jul 2003 20:51

Re: CheckLISTBOX
 
danke schon mal!
noch ne frage:
wie bau ich das dann in einen button rein? *g*


bidde um help :p

greez Zero1

Zero1 8. Jul 2003 12:10

Re: CheckLISTBOX
 
bidde um help! :(


zero1

Christian Seehase 8. Jul 2003 16:31

Re: CheckLISTBOX
 
Moin Zero,

hast Du Dir mal meine Variante angesehen?

Zero1 8. Jul 2003 18:20

Re: CheckLISTBOX
 
jo aber war bissl kompli ! deswegen nahm ich die andere ! :(


greez Zero1

Christian Seehase 8. Jul 2003 18:26

Re: CheckLISTBOX
 
Moin Zero,

dann noch einmal vielleicht etwas deutlicher:

Delphi-Quellcode:
// globale Variable
var
  fNewDocument : Boolean = false;

// in den Write Routinen
  Webbrowser1.Navigate(...);
  fNewDocument := true;
  while fNewDocument do begin
    Application.ProcessMessages
  end;

// in OnDocumentComplete
  fNewDocument := false;
Deine ChecklistBox Abfrage kannst Du so lassen, wie in Deinem Eingangsposting.

Zero1 8. Jul 2003 19:01

Re: CheckLISTBOX
 
alles is klar bis auf :
Delphi-Quellcode:
  Webbrowser1.Navigate(...);
  fNewDocument := true;
  while fNewDocument do begin
  Application.ProcessMessages
wie soll ich das in den btngo reinmachen? da sind ja die

Delphi-Quellcode:
procedure TaMain.btnGoClick(Sender: TObject);
begin
if aoption.cbox1.Checked[3]
 then write1.click;
if aoption.cbox1.Checked[4]
 then write2.click;
if aoption.cbox1.Checked[5]
 then write3.click;
if aoption.cbox1.Checked[6]
 then write4.click;
if aoption.cbox1.Checked[7]
 then write5.click;
if aoption.cbox1.Checked[8]
 then write7.click;
if aoption.cbox1.Checked[9]
 then write8.click;
end;
hum

greez zero1

Christian Seehase 8. Jul 2003 20:09

Re: CheckLISTBOX
 
Moin Zero,

Code:
[color=red][b]// in den Write Routinen[/b][/color]
  Webbrowser1.Navigate(...);
  fNewDocument := true;
  while fNewDocument do begin
    Application.ProcessMessages
  end;

Zero1 8. Jul 2003 21:16

Re: CheckLISTBOX
 
many many many many many many many 10000000x many thx!THX !!!!!!

mega danke !!


greez zero1


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