Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    [DELPHI]Scalare freccia in uno stringgrid

    Salve a tutti!Rieccomi sul forum per necessità di aiuto
    Il compito che mi è stato assegnato,e la rappresentazione grafica di una pila che esegue push e pop..per rappresentarla c'è uno stringgrid,dove in una colonna scorre un puntatore,una freccina,che indica in quale riga si andrà a fare il push..nell altra colonna invece ci andranno numerini assegnati da un bottone "push" con uno spinedit..
    I miei primi intoppi è sullo scalare questa freccina,e so dov'è l'errore evidente,ma vi incollo cosa ho fatto:

    i è una variabile globale

    begin
    i:=5;

    while i=5 do
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;

    while i=4 do
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;

    while i=3 do
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;

    while i=2 do
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;

    while i=1 do
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;


    i:=i-1;
    end;

    Il programma mi entra in loop infinito,perchè chiaramente ho inizializzato 5 all inizio,e quindi mi eseguirà all infinito quel while..vorrei sapere se c'è un modo di inizializzare 5 in un posto dove non dia fastidio per scalare questa freccetta..ogni click del pulsante Push farà scalare di un posto la freccia e cancellerà quella precedente!..Disperato!

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    forse non ho capito il codice che hai scritto; non vorrei sbagliare suggerimento ma credo che nel tuo caso sia inutile usare il 'do while'.

    codice:
    for i:=5 downto 1 do
    begin
    
    if i= 5 then
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;
    
    if i= 4 then
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;
    
    if i= 3 then
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;
    
    if i= 2 then
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;
    
    if i= 1 then
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;
    
    end;

  3. #3
    Potrebbe essere inutile!Ma non capisco allora come fare salire la freccetta nello stringgrid..e cancellare la sua precedente..come potrei farlo?Ad ogni click del bottone deve scalare e cancellare..

    Originariamente inviato da 123delphi321
    forse non ho capito il codice che hai scritto; non vorrei sbagliare suggerimento ma credo che nel tuo caso sia inutile usare il 'do while'.

    codice:
    for i:=5 downto 1 do
    begin
    
    if i= 5 then
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;
    
    if i= 4 then
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;
    
    if i= 3 then
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;
    
    if i= 2 then
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;
    
    if i= 1 then
    begin
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[1,i+1]:='';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);
    end;
    
    end;

  4. #4
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    sinceramente, visto che si tratta di soli 5 righe.... io farei il refrsh delle 5 righe ad ogni click

  5. #5
    Non ho studiato questa cosa!Puoi scrivermi un pò ad esempio come?

    Originariamente inviato da 123delphi321
    sinceramente, visto che si tratta di soli 5 righe.... io farei il refrsh delle 5 righe ad ogni click

  6. #6
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    intendevo cosi:
    codice:
    stringgrid1.cells[1,1]:='';
    stringgrid1.cells[2,1]:='';
    
    stringgrid1.cells[1,2]:='';
    stringgrid1.cells[2,2]:='';
    
    stringgrid1.cells[1,3]:='';
    stringgrid1.cells[2,3]:='';
    
    stringgrid1.cells[1,4]:='';
    stringgrid1.cells[2,4]:='';
    
    stringgrid1.cells[1,5]:='';
    stringgrid1.cells[2,5]:='';
    
    stringgrid1.cells[1,i]:=' ---->';
    stringgrid1.cells[2,i]:=inttostr(spinedit1.value);

  7. #7
    Ehm..ascoltami,questo potrebbe funzionare per togliere i while..ma veramente non funziona perchè la freccia si sposta,ma assieme al numero,che invece dovrebbe rimanere fermo..
    ma il problema continua a porsi..anche perchè nelle tue linee non c'è l'implementazione della i,quindi la freccia si ferma alla prima cella (1,0)..

    Originariamente inviato da DevastoMC
    Non ho studiato questa cosa!Puoi scrivermi un pò ad esempio come?

  8. #8
    Utente di HTML.it
    Registrato dal
    Dec 2002
    Messaggi
    1,315
    scusa, ma il mio e' un suggerimento di come scrivere il codice. purtroppo non l'ho potuto testare.

    al limite, prova a postare tutto il codice che viene eseguito quando premi il pulsante...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.