Avatar billede scifo Nybegynder
02. april 2006 - 21:07 Der er 12 kommentarer og
1 løsning

Ryk felter i en CheckListBox

Hej Eksperter.

Jeg har en checklistbox med 4 items ex.
IT1
IT2
IT3
IT4

De items der er checked åbner hver sit program, men disse
skal man kunne rokere på, sådan at hvis man vil
åbne program 2 før program 1 skal dette kunne rettes
og huskes når programmet åbnes igen.

Er der nogen der kan hjælpe mig med dette? Bruger delphi 4.

Mvh
Scifo
Avatar billede scifo Nybegynder
02. april 2006 - 22:02 #1
Har fået løst mit Drag & Drop problem, nu mangler jeg bare at få difineret et Item
på en listbox.
Dette er den måde den skal læse det på
Se på Item 1, står der
IT1, åben program 1
Står der IT2, Åben program 2...

Se på Item 2, står der
IT1, åben program 1
Står der IT2, Åben program 2...

Håber dette er forståeligt :-)
Avatar billede kroning Nybegynder
03. april 2006 - 09:28 #2
lav en procedure der med 4 if sætninger tester hvad der står:

procedure StartProgram(hvad : string);
begin
if hvad='IT1' then
  start1
else
if hvad='IT2' then
  start2
osv.
end;

procceduren kalder du så en gang for hver af dine checklistbokse

StartProgram(Item1);
StartProgram(Item2);
osv.
Avatar billede scifo Nybegynder
03. april 2006 - 19:23 #3
Mente en listbox og ikke checklist, skrev vist forkert i den første rubrik. :-)

er heller ikke helt sikker på hvad du mener, kan jeg logge dig til at skrive hele koden for IT1 og IT2 på Item1 og 2?

Mvh
Scifo
Avatar billede kroning Nybegynder
04. april 2006 - 09:14 #4
procedure StartProgram(Hvad : string);

procedure RunProg(no : byte);
begin
    case no of
      1 : showmessage('kode til at starte program 1');
    2 : showmessage('kode til at starte program 2');
    3 : showmessage('kode til at starte program 3');
    4 : showmessage('kode til at starte program 4');
  end;
end;

begin
    if Hvad='IT1' then
      RunProg(1)
  else if Hvad='IT2' then
        RunProg(2)
  else if Hvad='IT3' then
        RunProg(3)
  else if Hvad='IT4' then
        RunProg(4)
end;

----------------

var
    i : integer;
begin
    for i:=0 to ListBox.Count-1 do
      StartProgram(ListBox.Items[i]);
end;

-----

Hvis der altid er et tal til slut efter ITx (1-4) så kan det gøres kortere:

procedure StartProgram(Hvad : string);
begin
    case Hvad[3] of
      '1' : showmessage('kode til at starte program 1');
    '2' : showmessage('kode til at starte program 2');
    '3' : showmessage('kode til at starte program 3');
    '4' : showmessage('kode til at starte program 4');
  end;
end;

--------------

var
    i : integer;
begin
    for i:=0 to ListBox.Count-1 do
      StartProgram(ListBox.Items[i]);
end;
Avatar billede scifo Nybegynder
10. april 2006 - 22:15 #5
Undskyld jeg har været så lang tid om at svare tilbage, men tror at vi har misfortået hinanden (eller jeg har forklaret mit problem forkert.
Jeg skal have defineret teksten på et Item.

Altså hvis der i Listboxen står Program1 i item1 og Program2 i item2, disse kan jeg
rokere på, så de bytter plads, men programmet kører, så Program2 står på Item1's plads og program1 står på Item2's plads, derfor skal koden læse teksten og starte med
at indlæse det program der står som Item1, og dernæst det der står som Item2.

Håber dette er mere klart :-)
Avatar billede kroning Nybegynder
10. april 2006 - 22:52 #6
Vil det sige at teksten i item1 indeholder navnet på den exe fil der skal køres?
Avatar billede scifo Nybegynder
13. april 2006 - 18:29 #7
Vil hellere sige at item1 indeholder et navn der skal starte en bestemt fil:
Ex. igen *gg*

Står der "Billed program" skal den starte c:\...\...\MSPaint.exe
Står der "Skrive program" skal den starte c:\...\...\word.exe

Det skal åbnes i valgt rækkefølge, som jeg skal kunne bytte rundt på
det er derfor at den skal "læse" teksten :-)
Avatar billede kroning Nybegynder
13. april 2006 - 18:34 #8
Jamen så er det jo faktisk det samme:

procedure StartProgram(Hvad : string);
begin
if Hvad='Billede program' then
  showmessage('kode til at starte billede program');
if Hvad='Skrive program' then
  showmessage('kode til at starte skrive program');
osv.

end;
Avatar billede scifo Nybegynder
18. april 2006 - 01:33 #9
Så er vi der næsten, skal have have defineret dit "Hvad" i den procedure.
Det er den kode der skal stå i stedet for "Hvad" jeg skal bruge ;-)
Avatar billede kroning Nybegynder
18. april 2006 - 20:22 #10
Her har jeg smidt en ListBox og en Button på en form og indtastet "Billede program" og "Skrive program" i listboxen, når jeg trykker på knappen vil de 2 programmer starte i den rækkefølge de står i i listboxen.

procedure StartProgram(Hvad : string);
begin
    if Hvad='Billede program' then
        ShellExecute(0,Pchar('Open'),Pchar('Notepad.exe'),nil,nil,SW_SHOW);
    if Hvad='Skrive program' then
        ShellExecute(0,Pchar('Open'),Pchar('mspaint.exe'),nil,nil,SW_SHOW);
end;

//---------------------

procedure TForm1.Button1Click(Sender: TObject);
var
    i : integer;
begin
    for i:=0 to ListBox.Count-1 do
        StartProgram(ListBox.Items[i]);
end;
Avatar billede kroning Nybegynder
18. april 2006 - 20:23 #11
Husk lige ShellApi i din uses.
Avatar billede scifo Nybegynder
20. april 2006 - 22:55 #12
Tak kroning.
Du har løst mit problem, "jeg gi meget stort 5 tal til dig" :-)
Smid et svar en tak for din tålmodighed :-)
Mvh
Scifo
Avatar billede kroning Nybegynder
20. april 2006 - 23:04 #13
Godt så :-)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester