mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-09-06 10:00:34 +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
|
||||
Begin
|
||||
ConnectSenderSignal(gObject, 'day-selected', @gtkdaychanged);
|
||||
ConnectSenderSignal(gObject, 'day-selected-double-click', @gtkdaychanged);
|
||||
ConnectSenderSignal(gCore, 'day-selected', @gtkdaychanged);
|
||||
ConnectSenderSignal(gCore, 'day-selected-double-click', @gtkdaychanged);
|
||||
end;
|
||||
|
||||
LM_PAINT :
|
||||
@ -3259,9 +3259,9 @@ begin
|
||||
|
||||
LM_MONTHCHANGED: //calendar
|
||||
Begin
|
||||
ConnectSenderSignal(gObject, 'month-changed', @gtkmonthchanged);
|
||||
ConnectSenderSignal(gObject, 'prev-month', @gtkmonthchanged);
|
||||
ConnectSenderSignal(gObject, 'next-month', @gtkmonthchanged);
|
||||
ConnectSenderSignal(gCore, 'month-changed', @gtkmonthchanged);
|
||||
ConnectSenderSignal(gCore, 'prev-month', @gtkmonthchanged);
|
||||
ConnectSenderSignal(gCore, 'next-month', @gtkmonthchanged);
|
||||
end;
|
||||
|
||||
LM_PRESSED:
|
||||
@ -3540,8 +3540,8 @@ begin
|
||||
|
||||
LM_YEARCHANGED : //calendar
|
||||
Begin
|
||||
ConnectSenderSignal(gObject, 'prev-year', @gtkyearchanged);
|
||||
ConnectSenderSignal(gObject, 'next-year', @gtkyearchanged);
|
||||
ConnectSenderSignal(gCore, 'prev-year', @gtkyearchanged);
|
||||
ConnectSenderSignal(gCore, 'next-year', @gtkyearchanged);
|
||||
end;
|
||||
|
||||
// Listview & Header control
|
||||
@ -4934,7 +4934,12 @@ begin
|
||||
|
||||
csCalendar :
|
||||
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;
|
||||
|
||||
csCheckbox :
|
||||
@ -6900,6 +6905,9 @@ end;
|
||||
{ =============================================================================
|
||||
|
||||
$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
|
||||
implemented for gtk intf TFileDialog.FilterIndex from Jesus
|
||||
|
||||
|
@ -33,7 +33,7 @@ uses
|
||||
{$ELSE}
|
||||
glib, gdk, gtk, {$Ifndef NoGdkPixbufLib}gdkpixbuf,{$EndIf} GtkFontCache,
|
||||
{$ENDIF}
|
||||
Calendar, WSCalendar, WSLCLClasses;
|
||||
GtkProc, GtkDef, Calendar, WSCalendar, WSLCLClasses;
|
||||
|
||||
type
|
||||
|
||||
@ -50,14 +50,26 @@ type
|
||||
class procedure SetReadOnly(const ACalendar: TCustomCalendar; const AReadOnly: boolean); override;
|
||||
end;
|
||||
|
||||
function GetGtkCalendar(const ACalendar: TCustomCalendar): PGtkCalendar;
|
||||
|
||||
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;
|
||||
var
|
||||
Year, Month, Day: word; //used for csCalendar
|
||||
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.
|
||||
Result := EncodeDate(Year,Month+1,Day);
|
||||
end;
|
||||
@ -67,7 +79,7 @@ var
|
||||
Year, Month, Day: string;
|
||||
GtkCalendar: PGtkCalendar;
|
||||
begin
|
||||
GtkCalendar := PGtkCalendar(ACalendar.Handle);
|
||||
GtkCalendar := GetGtkCalendar(ACalendar);
|
||||
Year := FormatDateTime('yyyy', ADateTime);
|
||||
Month := FormatDateTime('mm', ADateTime);
|
||||
Day := FormatDateTime('dd', ADateTime);
|
||||
@ -98,14 +110,15 @@ begin
|
||||
num := Num + (1 shl 4);
|
||||
|
||||
gtkCalendarDisplayOptions := TGtkCalendarDisplayOptions(num);
|
||||
gtk_Calendar_Display_options(PGtkCalendar(ACalendar.Handle), gtkCalendarDisplayOptions);
|
||||
gtk_Calendar_Display_options(GetGtkCalendar(ACalendar), gtkCalendarDisplayOptions);
|
||||
end;
|
||||
|
||||
procedure TGtkWSCalendar.SetReadOnly(const ACalendar: TCustomCalendar; const AReadOnly: boolean);
|
||||
procedure TGtkWSCalendar.SetReadOnly(const ACalendar: TCustomCalendar;
|
||||
const AReadOnly: boolean);
|
||||
var
|
||||
GtkCalendar: PGtkCalendar;
|
||||
begin
|
||||
GtkCalendar := PGtkCalendar(ACalendar.Handle);
|
||||
GtkCalendar := GetGtkCalendar(ACalendar);
|
||||
if AReadOnly then
|
||||
gtk_calendar_freeze(GtkCalendar)
|
||||
else
|
||||
|
Loading…
Reference in New Issue
Block a user