mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-26 22:09:21 +02:00
creating gtk_calendar in a gtk_frame - calendar seems to need a parent window
git-svn-id: trunk@6987 -
This commit is contained in:
parent
2c1e543208
commit
82338611c1
@ -3212,8 +3212,8 @@ begin
|
|||||||
|
|
||||||
LM_DAYCHANGED : //calendar
|
LM_DAYCHANGED : //calendar
|
||||||
Begin
|
Begin
|
||||||
ConnectSenderSignal(gObject, 'day-selected', @gtkdaychanged);
|
ConnectSenderSignal(gCore, 'day-selected', @gtkdaychanged);
|
||||||
ConnectSenderSignal(gObject, 'day-selected-double-click', @gtkdaychanged);
|
ConnectSenderSignal(gCore, 'day-selected-double-click', @gtkdaychanged);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_PAINT :
|
LM_PAINT :
|
||||||
@ -3259,9 +3259,9 @@ begin
|
|||||||
|
|
||||||
LM_MONTHCHANGED: //calendar
|
LM_MONTHCHANGED: //calendar
|
||||||
Begin
|
Begin
|
||||||
ConnectSenderSignal(gObject, 'month-changed', @gtkmonthchanged);
|
ConnectSenderSignal(gCore, 'month-changed', @gtkmonthchanged);
|
||||||
ConnectSenderSignal(gObject, 'prev-month', @gtkmonthchanged);
|
ConnectSenderSignal(gCore, 'prev-month', @gtkmonthchanged);
|
||||||
ConnectSenderSignal(gObject, 'next-month', @gtkmonthchanged);
|
ConnectSenderSignal(gCore, 'next-month', @gtkmonthchanged);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
LM_PRESSED:
|
LM_PRESSED:
|
||||||
@ -3540,8 +3540,8 @@ begin
|
|||||||
|
|
||||||
LM_YEARCHANGED : //calendar
|
LM_YEARCHANGED : //calendar
|
||||||
Begin
|
Begin
|
||||||
ConnectSenderSignal(gObject, 'prev-year', @gtkyearchanged);
|
ConnectSenderSignal(gCore, 'prev-year', @gtkyearchanged);
|
||||||
ConnectSenderSignal(gObject, 'next-year', @gtkyearchanged);
|
ConnectSenderSignal(gCore, 'next-year', @gtkyearchanged);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
// Listview & Header control
|
// Listview & Header control
|
||||||
@ -4934,7 +4934,12 @@ begin
|
|||||||
|
|
||||||
csCalendar :
|
csCalendar :
|
||||||
begin
|
begin
|
||||||
p := gtk_calendar_new();
|
p := gtk_frame_new(nil);
|
||||||
|
TempWidget := gtk_calendar_new();
|
||||||
|
gtk_container_add(GTK_CONTAINER(p), TempWidget);
|
||||||
|
SetMainWidget(p, TempWidget);
|
||||||
|
GetWidgetInfo(p, True)^.CoreWidget := TempWidget;
|
||||||
|
gtk_widget_show_all(p);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
csCheckbox :
|
csCheckbox :
|
||||||
@ -6900,6 +6905,9 @@ end;
|
|||||||
{ =============================================================================
|
{ =============================================================================
|
||||||
|
|
||||||
$Log$
|
$Log$
|
||||||
|
Revision 1.644 2005/03/18 14:43:53 mattias
|
||||||
|
creating gtk_calendar in a gtk_frame - calendar seems to need a parent window
|
||||||
|
|
||||||
Revision 1.643 2005/03/11 15:35:49 mattias
|
Revision 1.643 2005/03/11 15:35:49 mattias
|
||||||
implemented for gtk intf TFileDialog.FilterIndex from Jesus
|
implemented for gtk intf TFileDialog.FilterIndex from Jesus
|
||||||
|
|
||||||
|
@ -33,7 +33,7 @@ uses
|
|||||||
{$ELSE}
|
{$ELSE}
|
||||||
glib, gdk, gtk, {$Ifndef NoGdkPixbufLib}gdkpixbuf,{$EndIf} GtkFontCache,
|
glib, gdk, gtk, {$Ifndef NoGdkPixbufLib}gdkpixbuf,{$EndIf} GtkFontCache,
|
||||||
{$ENDIF}
|
{$ENDIF}
|
||||||
Calendar, WSCalendar, WSLCLClasses;
|
GtkProc, GtkDef, Calendar, WSCalendar, WSLCLClasses;
|
||||||
|
|
||||||
type
|
type
|
||||||
|
|
||||||
@ -50,14 +50,26 @@ type
|
|||||||
class procedure SetReadOnly(const ACalendar: TCustomCalendar; const AReadOnly: boolean); override;
|
class procedure SetReadOnly(const ACalendar: TCustomCalendar; const AReadOnly: boolean); override;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
function GetGtkCalendar(const ACalendar: TCustomCalendar): PGtkCalendar;
|
||||||
|
|
||||||
implementation
|
implementation
|
||||||
|
|
||||||
|
function GetGtkCalendar(const ACalendar: TCustomCalendar): PGtkCalendar;
|
||||||
|
var
|
||||||
|
WinWidgetInfo: PWidgetInfo;
|
||||||
|
begin
|
||||||
|
Result:=nil;
|
||||||
|
if (ACalendar=nil) or (not ACalendar.HandleAllocated) then exit;
|
||||||
|
WinWidgetInfo:=GetWidgetInfo(PGtkWidget(ACalendar.Handle), False);
|
||||||
|
if WinWidgetInfo=nil then exit;
|
||||||
|
Result:=PGtkCalendar(WinWidgetInfo^.CoreWidget);
|
||||||
|
end;
|
||||||
|
|
||||||
function TGtkWSCalendar.GetDateTime(const ACalendar: TCustomCalendar): TDateTime;
|
function TGtkWSCalendar.GetDateTime(const ACalendar: TCustomCalendar): TDateTime;
|
||||||
var
|
var
|
||||||
Year, Month, Day: word; //used for csCalendar
|
Year, Month, Day: word; //used for csCalendar
|
||||||
begin
|
begin
|
||||||
gtk_calendar_get_date(PGtkCalendar(ACalendar.Handle), @Year, @Month, @Day);
|
gtk_calendar_get_date(GetGtkCalendar(ACalendar), @Year, @Month, @Day);
|
||||||
//For some reason, the month is zero based.
|
//For some reason, the month is zero based.
|
||||||
Result := EncodeDate(Year,Month+1,Day);
|
Result := EncodeDate(Year,Month+1,Day);
|
||||||
end;
|
end;
|
||||||
@ -67,7 +79,7 @@ var
|
|||||||
Year, Month, Day: string;
|
Year, Month, Day: string;
|
||||||
GtkCalendar: PGtkCalendar;
|
GtkCalendar: PGtkCalendar;
|
||||||
begin
|
begin
|
||||||
GtkCalendar := PGtkCalendar(ACalendar.Handle);
|
GtkCalendar := GetGtkCalendar(ACalendar);
|
||||||
Year := FormatDateTime('yyyy', ADateTime);
|
Year := FormatDateTime('yyyy', ADateTime);
|
||||||
Month := FormatDateTime('mm', ADateTime);
|
Month := FormatDateTime('mm', ADateTime);
|
||||||
Day := FormatDateTime('dd', ADateTime);
|
Day := FormatDateTime('dd', ADateTime);
|
||||||
@ -98,14 +110,15 @@ begin
|
|||||||
num := Num + (1 shl 4);
|
num := Num + (1 shl 4);
|
||||||
|
|
||||||
gtkCalendarDisplayOptions := TGtkCalendarDisplayOptions(num);
|
gtkCalendarDisplayOptions := TGtkCalendarDisplayOptions(num);
|
||||||
gtk_Calendar_Display_options(PGtkCalendar(ACalendar.Handle), gtkCalendarDisplayOptions);
|
gtk_Calendar_Display_options(GetGtkCalendar(ACalendar), gtkCalendarDisplayOptions);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TGtkWSCalendar.SetReadOnly(const ACalendar: TCustomCalendar; const AReadOnly: boolean);
|
procedure TGtkWSCalendar.SetReadOnly(const ACalendar: TCustomCalendar;
|
||||||
|
const AReadOnly: boolean);
|
||||||
var
|
var
|
||||||
GtkCalendar: PGtkCalendar;
|
GtkCalendar: PGtkCalendar;
|
||||||
begin
|
begin
|
||||||
GtkCalendar := PGtkCalendar(ACalendar.Handle);
|
GtkCalendar := GetGtkCalendar(ACalendar);
|
||||||
if AReadOnly then
|
if AReadOnly then
|
||||||
gtk_calendar_freeze(GtkCalendar)
|
gtk_calendar_freeze(GtkCalendar)
|
||||||
else
|
else
|
||||||
|
Loading…
Reference in New Issue
Block a user