Hello, everybody
I am using gtk2forpascal. I want to program as follows:
>>>>
TButton = class(Tobject)
private
FButton:PGtkWidget;
public
constructor Create;
destructor Destroy;
procedure Callback_OnClick(widget:PGtkWidget; data:Object); cdecl;
end;//TButton
constructor TButton.Create;
begin
inherited Create;
FButton:=gtk_button_new_with_label('Click Me!');
gtk_widget_show(FButton);
g_signal_connect(G_OBJECT(FButton),'clicked',
TGCALLBACK(@Callback_OnClick),self);
...
end;//TButton.Create
procedure TButton.Callback_OnClick(widget:PGtkWidget; data:Object); cdecl;
begin
......
end;//TButton.Callback_OnClick
<<<<<But I can't comiler this program. When I connect the signal with a subroutine which is not a method, the compilation works. Can anybody confirm me that: In class definition, We can't use "@MethodName" and in one method there's no way to directly connect a signal with another method in the same class? In short, is there "callbacks method"?
And another problem, I found the following code style in Lazarus project sources:
>>>>
procedure TSomeClass.FuncName(...);
procedure FuncNameEmbeded(...);
begin
.....
end;//FuncNameEmbeded
begin
end;//TSomeClass.FuncName
<<<<<I know it's "nested procedure". But the information from fpc documentations is too little. can you tell me more about it? Why the following code can compile but will run with "Access violation"?
>>>>
procedure TSomeClass.FuncName(...);
procedure FuncNameEmbeded(...);
begin
.....
writeln(FValue);//Here FValue is a member (Integer) of TSomecalss
.....
end;//FuncNameEmbeded
begin
end;//TSomeClass.FuncName
<<<<<Thanks,
Yours,
mili
