Code: Alles auswählen
const
cmdKey='cmdKey';
type
TCmd = (cmdRemove, cmdRemoveAll, cmdAppend, cmdUp, cmdDown);
Code: Alles auswählen
function CreateBtnButton(label_, icon_name: Pgchar; cmd: TCmd; listBox: PGtkWidget): PGtkWidget;
...
Result := gtk_button_new;
...
g_object_set_data(G_OBJECT(Result), cmdKey, Pointer(PtrInt(cmd))); // !!!!!
...
end;
Code: Alles auswählen
procedure btn_click_cp(widget: PGtkWidget; Data: Tgpointer); cdecl;
var
cmd: TCmd;
begin
cmd := TCmd(PtrInt(g_object_get_data(G_OBJECT(widget), cmdKey))); // !!!!!
WriteLn(cmd);
case cmd of
cmdRemove: begin
...
end;
...
Code: Alles auswählen
var
obj: Tgpointer;
cmd: TCmd absolute obj;
begin
obj := g_object_get_data(G_OBJECT(widget), cmdKey);
case cmd of
Gibt es da was besseres oder muss man den doppel-cast in Kauf nehmen.