* * * *

Privacy Policy

Blog italiano

Clicca qui se vuoi andare al blog italiano su Lazarus e il pascal.

Forum ufficiale

Se non siete riusciti a reperire l'informazione che cercavate nei nostri articoli o sul nostro forum vi consiglio di visitare il
Forum ufficiale di Lazarus in lingua inglese.

Lazarus 1.0

Trascinare un file nel programma
DB concetti fondamentali e ZeosLib
Recuperare codice HTML da pagina web
Mandare mail con Lazarus
Stabilire il sistema operativo
Esempio lista in pascal
File INI
Codice di attivazione
Realizzare programmi multilingua
Lavorare con le directory
Utilizzare Unità esterne
TTreeView
TTreeview e Menu
Generare controlli RUN-TIME
LazReport, PDF ed immagini
Intercettare tasti premuti
Ampliare Lazarus
Lazarus e la crittografia
System Tray con Lazarus
UIB: Unified Interbase
Il file: questo sconosciuto
Conferma di chiusura di un applicazione
Liste e puntatori
Overload di funzioni
Funzioni a parametri variabili
Proprietà
Conversione numerica
TImage su Form e Panel
Indy gestiore server FTP lato Client
PopUpMenu sotto Pulsante (TSpeedButton)
Direttiva $macro
Toolbar
Evidenziare voci TreeView
Visualizzare un file Html esterno
StatusBar - aggirare l'errore variabile duplicata
Da DataSource a Excel
Le permutazioni
Brute force
Indy 10 - Invio email con allegati
La gestione degli errori in Lazarus
Pascal Script
Linux + Zeos + Firebird
Dataset virtuale
Overload di operatori
Lavorare con file in formato JSON con Lazarus
Zeos ... dietro le quinte (prima parte)
Disporre le finestre in un blocco unico (come Delphi)
Aspetto retrò (Cmd Line)
Lazarus 1.0
Come interfacciare periferica twain
Ubuntu - aggiornare free pascal e lazarus
fpcup: installazioni parallele di lazarus e fpc
Free Pascal e Lazarus sul Raspberry Pi
Cifratura: breve guida all'uso dell'algoritmo BlowFish con lazarus e free pascal.
Creare un server multithread
guida all'installazione di fpc trunk da subversion in linux gentoo
Indice
DB concetti fondamentali e connessioni standard
Advanced Record Syntax
DB concetti fondamentali e DBGrid
DB concetti fondamentali e TDBEdit, TDBMemo e TDBText
Advanced Record Syntax: un esempio pratico
Superclasse form base per programmi gestionali (e non)
Superclasse form base per programmi gestionali (e non) #2 - log, exception call stack, application toolbox
Superclasse form base per programmi gestionali (e non) #3 - traduzione delle form
Superclasse form base per programmi gestionali (e non) #4 - wait animation
Un dialog per la connessione al database:TfmSimpleDbConnectionDialog
Installare lazarus su mac osx sierra
immagine docker per lavorare con lazarus e free pascal
TDD o Test-Driven Development
Benvenuto! Effettua l'accesso oppure registrati.
Aprile 29, 2024, 04:09:51 am

Inserisci il nome utente, la password e la durata della sessione.

369 Visitatori, 0 Utenti

Autore Topic: CheckGroup come ordinare le scelte?  (Letto 7600 volte)

supercim

  • Jr. Member
  • **
  • Post: 60
  • Karma: +0/-1
CheckGroup come ordinare le scelte?
« il: Maggio 20, 2016, 11:08:29 am »
Nel programma che sto realizzando ho utilizzato: CheckGroup, ma il mio amico, che dovrà utilizzare il programma, ha bisogno di impostare l'ordine oltre che alla selezione. C'è un oggetto che man mano che selezioni dà un ordine numerico?

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:CheckGroup come ordinare le scelte?
« Risposta #1 il: Maggio 21, 2016, 09:25:55 am »
Ciao
Dalla documentazione l'ordinamento è imposto dalla lista di di stringhe che trova.
http://lazarus-ccr.sourceforge.net/docs/lcl/extctrls/tcheckgroup.items.html
Altera a programma l'ordine e forza la creazione a runtime.
😊
Credo che alterare l'ordine dopo la creazione non cambi il risultato visivo. Continuo a cercare nella documentazio per vedere se ci sono eventi che possano essere utili.
Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

xinyiman

  • Administrator
  • Hero Member
  • *****
  • Post: 3249
  • Karma: +12/-0
Re:CheckGroup come ordinare le scelte?
« Risposta #2 il: Maggio 21, 2016, 09:30:19 am »
Puoi fare che inverti semplicemente le caption degli oggetti. Praticamente usi una variabile d'appoggio e così cambi l'ordinamento visivo e poi i valori li calcoli sulla base della caption della check cliccata.
Ieri è passato, domani è futuro, oggi è un dono...

supercim

  • Jr. Member
  • **
  • Post: 60
  • Karma: +0/-1
Re:CheckGroup come ordinare le scelte?
« Risposta #3 il: Maggio 21, 2016, 09:45:37 am »
Dal programma faccio caricare dei file testo, nei quali inserisce li esercizi, nell'ordine che preferisce, purtroppo quando realizza una scheda, non vuole un ordine fisso, ma selezionare lui, ogni volta, l'ordine che preferisce, l'ideale sarebbe un oggetto che man mano che seleziona numera, così quando andrà in stampa, avrà l'ordine desiderato.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:CheckGroup come ordinare le scelte?
« Risposta #4 il: Maggio 21, 2016, 11:04:59 am »
... ok forse il problema è diverso da come lo avevo capito in origine.

L'ordine numerico credo non sia indispensabile.
Hai la possibilità di creare l'ordine con una doppia list box. In questo modo l'ordinamento è fatto direttamente con l'append alla seconda list box.
Quando salvi la seconda list box hai fatto la "scheda". Carichi quella senza farti problemi di ordinamento.
Se proprio il cliente vuole vedere i numeri puoi mettere un gestore di rendering sulla seconda list box che metta l'ordine in fase di rendering degli elementi. Così è facilmente intuibile che gli elementi hanno un ordine che è legato alla posizione nella listbox.
La prima listbox, secondo me, dovrebbe avere gli elementi (stringhe) ordinate in ordine alfabetico per poter trovare velocemente le stringhe contenute (rendendo più complessa l'interfaccia, puoi mettere un filtro - un campo di editing - sopra la prima lista box in modo fa fare un filtro continuo - onKeyUp - sulla prima list box).

Stilgar
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

supercim

  • Jr. Member
  • **
  • Post: 60
  • Karma: +0/-1
Re:CheckGroup come ordinare le scelte?
« Risposta #5 il: Maggio 21, 2016, 02:40:01 pm »
Ho inserito il programma Scheda Pesi nel gruppo:

https://www.facebook.com/groups/271921909809912/

Provatelo e fatemi sapere.

Vi ricordo che il gruppo è chiuso, quindi iscrivetevi senza problemi, solo noi iscritti
 
possiamo leggere ciò che inseriamo nel gruppo.

Stilgar

  • Global Moderator
  • Hero Member
  • *****
  • Post: 2382
  • Karma: +10/-0
Re:CheckGroup come ordinare le scelte?
« Risposta #6 il: Maggio 21, 2016, 07:12:57 pm »
Ci sono i sorgenti o gli eseguibili?
Al mondo ci sono 10 tipi di persone ... chi capisce il binario e chi no.

supercim

  • Jr. Member
  • **
  • Post: 60
  • Karma: +0/-1
Re:CheckGroup come ordinare le scelte?
« Risposta #7 il: Maggio 21, 2016, 07:40:44 pm »
Ho inserito solo l'eseguibile.

supercim

  • Jr. Member
  • **
  • Post: 60
  • Karma: +0/-1
Re:CheckGroup come ordinare le scelte?
« Risposta #8 il: Maggio 21, 2016, 07:48:56 pm »
Ho pensato di usare l'evento: OnItemClick

procedure TForm1.CGprog1ItemClick(Sender: TObject; Index: integer);
begin
     if CGprog1.Checked[index]=true then Label4.Caption:=IntToStr(index);
end;

Invece della Label, carico un vettore e quando viene deselezionato un esercizio, tolgo il valore dal vettore, declassando. Nella prova ho usato un oggetto inserito nel Form, ma nel programma ho utilizzato degli oggetti vettore dichiarati:
CGprox[1..5] ora devo capire come usare l'evento: 
OnItemClick su questi oggetti dichiarati.
Quando provo ad attivare con l'istruzione:
CGprogX[indx].OnItemClick:=CGprog1ItemClick;
mi da errore.
« Ultima modifica: Maggio 21, 2016, 07:53:31 pm da supercim »

brunello

  • Jr. Member
  • **
  • Post: 83
  • Karma: +0/-0
Re:CheckGroup come ordinare le scelte?
« Risposta #9 il: Maggio 22, 2016, 02:56:18 pm »
//cosi funziona, ciao Brunllo

  TForm1 = class(TForm)
    CheckGroup1: TCheckGroup;
    procedure CheckGroup1ItemClick(Sender: TObject; Index: integer);
    procedure FormClose(Sender: TObject; var CloseAction: TCloseAction);
    procedure FormCreate(Sender: TObject);
    procedure FormDestroy(Sender: TObject);
  private
    { private declarations }
    lista: TStringList;
  public
    { public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.lfm}

{ TForm1 }

procedure TForm1.CheckGroup1ItemClick(Sender: TObject; Index: integer);
var
  s: string;
  i: integer;
begin
  s := (Sender as TCheckGroup).Items[index];
  if (Sender as TCheckGroup).Checked[index] then
    lista.add(s)
  else
    begin
      i := lista.indexof(s);
      if i >= 0 then
        lista.Delete(i);
    end;
end;

procedure TForm1.FormClose(Sender: TObject; var CloseAction: TCloseAction);
begin
  lista.SaveToFile('indice.txt');
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  lista := TStringList.Create;
end;

procedure TForm1.FormDestroy(Sender: TObject);
begin
  lista.Free;
end;

supercim

  • Jr. Member
  • **
  • Post: 60
  • Karma: +0/-1
Re:CheckGroup come ordinare le scelte?
« Risposta #10 il: Maggio 22, 2016, 09:04:07 pm »
Ti ringrazio, ma in questo esempio bisogna sempre trascinare l'oggetto:
CheckGroup1 nel form
poi andare su Ispettore oggetti
 in eventi e attivare su: OnItemClick
CheckGroup1ItemClick

Io ho bisogno di capire come posso attivare OnItemClick da istruzione.
Se scrivo:
CheckGroup1.OnItemClick:=CheckGroup1ItemClick;
mi da errore,
ho bisogno di capire qual'è l'istruzione esatta,
così posso attivare agli oggetti che ho dichiarato e non trascinato.

Legolas

  • Global Moderator
  • Sr. Member
  • *****
  • Post: 366
  • Karma: +3/-0
Re:CheckGroup come ordinare le scelte?
« Risposta #11 il: Maggio 23, 2016, 02:20:17 pm »
Ciao,
sarebbe utile sapere il tipo di errore che ti restituisce. In ogni caso, prova così:
Codice: [Seleziona]
CheckGroup1.OnItemClick := @CheckGroup1ItemClick;

supercim

  • Jr. Member
  • **
  • Post: 60
  • Karma: +0/-1
Re:CheckGroup come ordinare le scelte?
« Risposta #12 il: Maggio 23, 2016, 02:49:35 pm »
Si grazie! Lo avevo appena scoperto cercando sul web, dovevo inserire la @ davanti al comando. Ora posso attivare agli oggetti creati e caricare un vettore che mi darà l'ordine delle scelte selezionate.

supercim

  • Jr. Member
  • **
  • Post: 60
  • Karma: +0/-1
Re:CheckGroup come ordinare le scelte?
« Risposta #13 il: Maggio 23, 2016, 06:38:24 pm »
procedure TForm1.CGprog1ItemClick(Sender: TObject; Index: integer);
var lng,i2: integer;
    slg,sl2,ist: string;
begin
     if CGprogX[1].Checked[index]=true then begin
        sel[1]:=sel[1]*10+(index+1);
        slg:=IntToStr(sel[1]);
        Label10.Caption:=slg;
     end
     else begin
        slg:=IntToStr(sel[1]);
        lng:=length(slg);
        if lng>1 then begin
           ist:=IntToStr(index+1);
           i2:=0;
           repeat
                 i2:=i2+1;
                 sl2:=copy(slg,i2,1);
           until sl2=ist;
           delete(slg,i2,1);
           Label10.Caption:=slg;
           Sel[1]:=StrToInt(slg);
        end
        else begin
             slg:='';
             Sel[1]:=0;
             Label10.Caption:='';
        end;
     end;
end;

In questo modo posso caricare le selezioni nell'ordine desiderato in un unico valore, nel vettore Sel[1]. Così continuerò per gli altri TCheckGroup inserendoli in Sel[2]; Sel[3] e così via.

supercim

  • Jr. Member
  • **
  • Post: 60
  • Karma: +0/-1
Re:CheckGroup come ordinare le scelte?
« Risposta #14 il: Maggio 24, 2016, 05:45:10 pm »
Stavo pensando che mi conviene dichiarare il vettore Sel[0..300] come stringa e non come Integer, perchè potrei raggiungere un numero elevato e darmi errore, non sò qual'è il numero massimo raggiungibile come Integer. Nel vettore sel[] caricavo un numero per ogni TCheckGroup, questo numero era la corrispondente decimale della sequenza delle selezioni come fosse un valore binario che trasformavo in decimale. Ora dato che mi serve avere anche l'ordine di selezione, considero una cifra per ogni selezione nei primi 5 TCheckGroup, che hanno 8 opzioni, negli altri TCheckGroup considero 2 cifre per selezione, se hanno 31 opzioni l'index può andare da 0 a 30 sommo 10 così il dato và da 10 a 40 ed è sempre a 2 cifre, ma se le selezioni sono molte potrebbe uscirmi un numero elevato moltiplicando per 100, ogni volta che si aggiunge una scelta, invece lo trasformo in stringa e mi basta sommare le stringhe.

 

Recenti

How To

Utenti
Stats
  • Post in totale: 18781
  • Topic in totale: 2235
  • Online Today: 375
  • Online Ever: 900
  • (Gennaio 21, 2020, 08:17:49 pm)
Utenti Online
Users: 0
Guests: 369
Total: 369

Disclaimer:

Questo blog non rappresenta una testata giornalistica poiché viene aggiornato senza alcuna periodicità. Non può pertanto considerarsi un prodotto editoriale ai sensi della legge n. 62/2001.