Pagina 1 di 6 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 53
  1. #1

    [Delphi] Grid o sostituto.. cercasi help

    ciao gente,
    ho bisogno di un aiuto:

    deevo fare una cosa:

    al click su un pulsante da parte deel'utente deve essere creato un oggetto che contenga varie righe in modo tale da poter funzionare come un foglio di calcolo di excel.
    una tabella che abbia un tot di righe all'inizio che sottragga al valore sulla riga precedente il valore successivo con un smeplicee click su INVIO e laddove fossero finite le righe, non appena viene aggiunto un valore nell'ultima riga ne venga aggiunta subito una nuova...

    queto andrebbe codificato tutto a priori, poichè di queste "tabelle" ne esistono ZERO all'avvio del programma e poi l'utente ne crea quante ne vuole al momento...

    come faccio?
    mi sapete aiutare?

    grazie.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,881
    Credo che possa fare al caso tuo il controllo TStringGrid.

    E' un controllo, manipolabile unicamente a runtime, che ti permette di definire liberamente di quante celle è composto, qual è il loro contenuto, di aggiungerne di nuove e modificarne le opzioni (possibilità di modificare i valori, ecc.).

    Trovi la spiegazione di tutte queste funzionalità nella Guida in linea.

    Potresti creare, ad ogni comando esplicito dell'utente, una di queste StringGrid e allinearle al bordo sinistro della finestra principale tramite la proprietà Align.

    Se hai bisogno di definire più comandi per ciascuna griglia e vorresti integrarli eventualmente in un'interfaccia che venga replicata per ogni griglia (tanto per intenderci, per avere tanti riquadri uguali che contengano la griglia e i pulsanti per lavorarci sopra), allora potresti dare una sbirciata all'uso dei TFrame, sulla Guida in linea o magari ricercando qualche informazione su Internet.

    Riassumendo, potresti creare un frame nel tuo progetto che contenga la griglia e i pulsanti che consentono di eseguire le operazioni sulla stessa. Un frame non è altro che un contenitore che puoi duplicare quante volte vuoi all'interno del form principale, senza però duplicare il codice preposto alla gestione del frame.

    I pulsanti che andrai a inserire nel frame aggiungeranno, rimuoveranno e modificheranno il contenuto della griglia appartenente allo stesso frame, secondo le tue esigenze specifiche.

    Se lasci attive le scrollbar nella form principale, potrai aggiungere quante istanze del frame con la griglia desideri, scorrendole da sinistra verso destra.

    Credo di averti dato un buon numero di indicazioni e riferimenti per permetterti di compiere qualche ricerca personale assolutamente necessaria per completare il tuo lavoro.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  3. #3
    mmmhhh
    la vedo dura, anche perchè la guida in liena fa un bel pò pena....

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,881
    Non offendiamo la Guida in linea di Delphi, che al 99% dei casi fornisce le risposte ai quesiti postati sui forum e sui newsgroup!

    Senza contare la sua caratteristica di essere "contestuale", quindi di aprirsi mostrando le istruzioni della funzione, del tipo o della parola chiave selezionata...

    Inoltre, per ogni identificatore viene indicata la unit in cui esso è dichiarato...c'è la gerarchia completa dei componenti con tutte le proprietà e i metodi a disposizione di chi sviluppa applicazioni e chi invece si addentra nello sviluppo dei componenti.

    Poi, "attaccato" a qualcuno di questi vi è anche un esempio di utilizzo.

    Assieme alla documentazione, che dalla versione 6 di Delphi viene distribuita in formato PDF e non più cartaceo (ahimè), la Guida in linea rappresenta una delle più autorevoli e ufficiali fonti di informazione.

    Per molte cose, a me è bastato leggere la Guida e guardare un po' di codice per emergere dai miei problemi.

    Di certo, se aspetti di trovare al suo interno la soluzione completa ad un problema specifico che stai cercando di risolvere, le probabilità sono minime...ma dopotutto è il programmatore/sviluppatore che deve realizzare il software, giusto?

    Buona fortuna!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  5. #5
    eh si ho capito, ma se per un TSringGrid ci sono alemno 100 proprietà, 50 procedure e 10 funzioni comincia ad essere un pò difficile estapolare ciò di cui ho bisogno.
    tenedo conto del fatto che non some gestire una TString...

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,881
    Sinceramente, non potrei dirti di più di ciò che è riportato sulla Guida in linea, poichè farei semplicemente un'opera di "copia".

    Cercherò comunque di aiutarti.

    Ci sono alcune proprietà della TStringGrid che sono facilmente intuibili: ColCount e RowCount, che permettono di definire il numero di righe e colonne di cui è composta la griglia, mentre FixedCols e FixedRows indicano invece il numero di righe e colonne "fixed" (fisse), cioè che appaiono marcate e non scorrono assieme al resto del contenuto quando si agisce sulla griglia tramite le scrollbar di cui è dotata...sono la scelta ideale per inserire al loro interno intestazioni di colonna, titoli, ecc.

    Puoi personalizzare il colore della griglia tramite la proprietà Color, mentre la proprietà FixedColor modifica i colori delle celle fisse di cui abbiamo parlato prima.

    La proprietà che gioca un ruolo più importante è sicuramente Options: ti permette di personalizzare il comportamento della tua griglia come vuoi, aggiungendo e rimuovendo le righe di divisione delle celle fisse e non (goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine).
    Il valore goRangeSelect indica se è possibile selezionare più righe (o una serie di righe consecutive) dalla griglia.
    goDrawFocusRect abilita e disabilita la visualizzazione del rettangolo di focus attorno alla cella selezionata.
    goRowSizing e goColSizing bloccano e sbloccano la possibilità di ridimensionare la larghezza delle colonne e l'altezza delle righe.
    goEditing permette all'utente di modificare a mano il contenuto interno della cella selezionata.
    goTabs abilita la navigazione all'interno della griglia tramite il tasto TAB (in caso contrario, il TAB muove il focus al controllo successivo).
    goRowSelect indica se è possibile selezionare solo righe intere (evidenziandole)...e non singole celle.
    goAlwaysShowEditor indica se deve essere sempre visibile la casella di modifica e selezione del contenuto, anche quando le operazioni di editing sono state disabilitate.
    goThumbTracking mantiene aggiornata la visualizzazione del contenuto della griglia durante le operazioni di scorrimento.

    A runtime, puoi utilizzare le proprietà indicate sopra per influenzare il comportamento della griglia (ad esempio, incrementare ColCount oppure RowCount per aggiungere colonne e righe). Hai a disposizione inoltre un set completo di proprietà disponibili solo a runtime: Col e Row contengono gli indici numerici di colonna e riga relativi alla cella attualmente selezionata; se cambi il loro valore, selezioni la cella corrispondente.

    La proprietà Cells restituisce o imposta il contenuto delle celle (che forse è quella più utile).

    Penso di aver scritto tutto ciò di interessante che c'era da sapere.

    E tutto questo è riportato nella fedelissima e blasonata Guida in linea!

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  7. #7
    graazie.
    allora sarò io che sono scemo oppure non so cercare nella guida!

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    23,881
    Per visualizzare la Guida riferita ad un componente, ti basta selezionare il componente stesso sulla Palette o sul form e premere F1.

    La stessa cosa vale per le proprietà: selezioni la riga corrispondente nell'Object Inspector e premi F1.

    Idem per le parole chiave.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Delphi Succinctly (e-book)

  9. #9
    ah, ,chissà che così non migliori la situazione!

    ciao

  10. #10
    ehilà,
    incredibile a dirsi ma, dopo nemmeno due ore sono riuscito a dare l'impostazione che volevo io (più o meno) al TString GRid ed a farle fare ciòà che volevo io.

    però il codice che ho creato era specifico per una griglia unica già presente nel form, ma d'altra parte era l'unico modo per testare in tempo reale le modifiche..

    ora,
    come diavolo rendo generico il codice per tutte le griglie che devono apparire al click su pulsante?

    codice:
    procedure pulsanteClick(Sender: TObject);
    begin
      with TStringGrid.Create(self) do
      begin
        self:=parent;
        opzioni sceme varie....
      end;
    end;
    dove va infilato il lungo codice che gestisce la griglia?

    codice:
    procedure TForm1.GrigliaKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState); //gestisce i "conti" al click su invio
    var num1,num2,totale:integer;
    begin
      if key=vk_return then
       begin
         num1:=StrToInt(griglia.Cells[1,i]); //prende la riga col primo valore
         num2:=StrToInt(Griglia.Cells[1,i+1]); //prende la riga col secondo valore
         totale:=num1-num2; //li sottrae
         if totale<=0 then //formatta la griglia e la disabilita se il valore è 0
           begin
             messagedlg('Il valore è 0!!!',mtWarning,[mbOK],0);
             Griglia.Enabled:=false;
             Griglia.Color:=clMedGray;
             Griglia.FixedColor:=clMedGray;
             Griglia.Font.Color:=clGray;
           end;
         Griglia.Cells[1,i+2]:=IntToStr(totale); //restituisce la somma nella cella sottostante le due precedente
         Griglia.Cells[0,i] := 'Round ' + IntToStr(count); //Caption delle fixedCol
         Griglia.Cells[0,i+1] := 'Danni Subiti'; //idem
         i:=i+2; //incrementa il contatore che preleva i valori
         count:=count+1; //incrementa il contatore per formattare una fixedcol
         Griglia.RowCount:=Griglia.RowCount+2; //aggiunge due righe dopo l'operazione
       end;
    end;

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 © 2020 vBulletin Solutions, Inc. All rights reserved.