Newsgroup: it.comp.lang.delphi
Titolo: TCategoryButtons - TcollectionItem

1. Inserisco la TCategoryButtons sul frame che chiamo 'select'
2. aggiungo, a seconda dei dati trovati tramite ciclo while, i button
    abutton := select.categories[0].items.add;
    abutton.Caption :=  variabile;
    select.Categories[0].items[NPN].onclick :=
SelectCategories0Items0Click;
ho tre categories fisse
variabile è una stringa
NPN è un contatore
a tutti gli items applico la stressa procedura per OnClick
3. fino qui tutto funziona bene
4. nella procedura SelectCategories0Items0Click ho necessità di
conoscere l'Items cliccato
procedure Frame1.SelectCategories0Items0Click(Sender: TObject);
var pippo: TCollectionItem;
//riga : integer;
begin
  inherited;
showmessage(inttostr(pippo.Index));
//Nome.Text := NomeGrid.Cells[0,riga];
end;
così come scritto la procedura funziona ed ottengo il messaggio con il
numero di buttons cliccato
se elimino gli '//' ho errore e non funziona più nulla
HELP !!!
ps. sono impazzito in rete ma trovare info riguardo i TCategoryButton
ecc. è difficile, se qualcuno ha qualche link benvenga
grazie

 ecc. č difficile, se qualcuno ha qualche link benvenga
Non sono controlli cosě complessi in fondo; piů che altro, mi sembra che 
il tuo problema non abbia espressamente a che fare con i controlli in 
quanto tali, ma piů con un errore di sintassi, di logica o di utilizzo 
di elementi all'interno di un metodo di gestione dell'evento incriminato.
Ciao,
   Marco.
-- 
MARCO BREVEGLIERI
  (
http://www.marco.breveglieri.name
)

scusa ma ho eliminato un pezzo in cui utilizzavo la variabile 'riga'
riporto alcune prove, probabilmente mi conviene laorare su un form con
il solo TCategoryButton e capirne meglio il funzionamento.
___________________________________
procedure Tmod5_RSA.SelectCategories0Items0Click(Sender: TObject);
var
pippo: TCollectionItem;
begin
  inherited;
showmessage(inttostr(pippo.Index));
end;
funziona ed ho il messaggio con il numero di Item cliccato ...
___________________________________
procedure Tmod5_RSA.SelectCategories0Items0Click(Sender: TObject);
var
pippo: TCollectionItem;
riga : integer;
begin
  inherited;
showmessage(inttostr(pippo.Index));
riga := (pippo.Index);
showmessage(inttostr((riga)));
end;
funziona ed ho i messaggi con il numero di Item cliccato ...
____________________________________
procedure Tmod5_RSA.SelectCategories0Items0Click(Sender: TObject);
var
pippo: TCollectionItem;
riga : integer;
begin
  inherited;
//showmessage(inttostr(pippo.Index));
riga := (pippo.Index);
showmessage(inttostr((riga)));
end;
ho sempre messaggio con -1
___________________________________
procedure Tmod5_RSA.SelectCategories0Items0Click(Sender: TObject);
var
pippo: TCollectionItem;
riga : integer;
begin
  inherited;
//showmessage(inttostr(pippo.Index));
riga := (pippo.Index);
showmessage(inttostr((riga)));
ProviderName.Text := NagraGrid.Cells[0,riga];
end;
nessun messaggio ed errore:
Project scriptors_Editor.exe raised exception class EAccessViolation
with message 'Access violation at address 0041BC4F in module
'scriptors:Editor.exe'. Read of address 7A83661B.

ho provato su di un form 'pulito' ma ho sempre lo stesso errore
(togliendo i '//' il form funziona)
spero in un chiarimento (di sicuro faccio io qualche errore)
grazie
________________________________
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
  Dialogs, CategoryButtons, StdCtrls;
type
  TForm1 = class(TForm)
    CategoryButtons1: TCategoryButtons;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
    procedure CategoryButtons0Categories0Items0Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
NP1: integer;
aButton : TButtonItem;
begin
NP1 :=0;
while NP1 < 10 do
  begin
    abutton := CategoryButtons1.categories[0].items.add;
    abutton.Caption :=  IntToStr(NP1);
    CategoryButtons1.Categories[0].items[NP1].onclick :=
CategoryButtons0Categories0Items0Click;
    NP1 := NP1+1;
  end;
end;
procedure TForm1.CategoryButtons0Categories0Items0Click(Sender:
TObject);
var
pippo: TCollectionItem;
riga : integer;
begin
//showmessage(inttostr(pippo.Index));
riga := (pippo.Index);
showmessage(inttostr((riga)));
end;
end.

nessun aiuto ?

Questa funziona :-)
____________________________________________-
unit Unit1;
interface
uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls,
Forms,
  Dialogs, CategoryButtons, StdCtrls, ButtonGroup;
type
  TForm1 = class(TForm)
    CategoryButtons1: TCategoryButtons;
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
    procedure ItemClicked(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
NP1: integer;
aButton : TButtonItem;
begin
NP1 :=0;
CategoryButtons1.Categories[0].Items.Clear;
while NP1 < 10 do
  begin
    abutton := CategoryButtons1.categories[0].items.add;
    abutton.Caption :=  '1 - '+IntToStr(NP1);
    CategoryButtons1.Categories[0].items[NP1].onclick := ItemClicked;
    NP1 := NP1+1;
  end;
end;
procedure TForm1.ItemClicked(Sender: TObject);
var
pluto: TbuttonItem;
riga : integer;
begin
pluto := CategoryButtons1.SelectedItem;
edit1.Text := (inttostr(pluto.index));
end;
end.

questa è un'altra che funziona (ho trovato pochissimo in rete a
riguardo quindi prendetolo come 'futura memoria')
procedure Tmod5_RSA.SelectCategoryCollapase(Sender: TObject;
  const Category: TButtonCategory);
  var
  I : integer;
  begin
  inherited;
I := Category.Index;
if (i = 0) and (Category.Collapsed = false) then
begin
Select.Categories[1].Collapsed := true ;
Select.Categories[2].Collapsed := true ;
Select.Categories[3].Collapsed := true ;
end;
if (i = 1) and (category.Collapsed = false) then
begin
Select.Categories[0].Collapsed := true ;
Select.Categories[2].Collapsed := true ;
Select.Categories[3].Collapsed := true ;
end;
if (i = 2) and (category.Collapsed = false) then
begin
Select.Categories[1].Collapsed := true ;
Select.Categories[0].Collapsed := true ;
Select.Categories[3].Collapsed := true ;
end;
if (i = 3) and (category.Collapsed = false) then
begin
Select.Categories[1].Collapsed := true ;
Select.Categories[0].Collapsed := true ;
Select.Categories[2].Collapsed := true ;
end;
end;