mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-14 12:49:12 +02:00
* various fixes for win32 api mode
This commit is contained in:
parent
b294ab45d4
commit
7bda3f6f86
@ -718,6 +718,7 @@ CONST
|
||||
{ PRIVATE INTERNAL ROUTINES }
|
||||
{***************************************************************************}
|
||||
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
{---------------------------------------------------------------------------}
|
||||
{ TvClusterMsgHandler -> Platforms WIN/NT - Checked 08Jun98 LdB }
|
||||
@ -786,6 +787,7 @@ BEGIN
|
||||
iMessage, wParam, lParam); { Call TV view handler }
|
||||
END;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
|
||||
{---------------------------------------------------------------------------}
|
||||
{ IsBlank -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 08Jun98 LdB }
|
||||
@ -1064,12 +1066,14 @@ END;
|
||||
{---------------------------------------------------------------------------}
|
||||
PROCEDURE TInputLine.DrawBackGround;
|
||||
BEGIN
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then DestroyCaret; { Destroy any caret }
|
||||
{$ENDIF}
|
||||
{$IFDEF OS_OS2} { OS2 CODE }
|
||||
If (HWindow <> 0) Then WinDestroyCursor(HWindow); { Destroy any caret }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
Inherited DrawBackGround; { Call ancestor }
|
||||
END;
|
||||
|
||||
@ -1090,13 +1094,13 @@ BEGIN
|
||||
I := TextWidth(Data^[CurPos+1]) { Insert caret width }
|
||||
Else I := FontWidth; { At end use fontwidth }
|
||||
End;
|
||||
{$IFDEF OS_DOS}
|
||||
{$IFDEF NO_WINDOW}
|
||||
If (State AND sfCursorIns <> 0) Then Begin { Insert mode }
|
||||
If ((CurPos+1) <= Length(Data^)) Then { Not beyond end }
|
||||
WriteStr(-X, 0, Data^[CurPos+1], 5) { Create block cursor }
|
||||
Else ClearArea(X, 0, X+I, FontHeight, Green);{ Line cursor }
|
||||
End Else ClearArea(X, 0, X+I, FontHeight, Green);{ Line cursor }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin
|
||||
CreateCaret(HWindow, 0, I, FontHeight); { Create a craet }
|
||||
@ -1113,6 +1117,7 @@ BEGIN
|
||||
WinShowCursor(HWindow, True); { Show the caret }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
End;
|
||||
END;
|
||||
|
||||
@ -3219,7 +3224,10 @@ END;
|
||||
END.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.5 2001-05-04 08:42:54 pierre
|
||||
Revision 1.6 2001-05-04 10:46:01 pierre
|
||||
* various fixes for win32 api mode
|
||||
|
||||
Revision 1.5 2001/05/04 08:42:54 pierre
|
||||
* some corrections for linux
|
||||
|
||||
Revision 1.4 2001/05/03 22:32:52 pierre
|
||||
|
@ -597,7 +597,9 @@ CONST
|
||||
HideMouseProc: DrawProc = Nil; { Hide mouse procedure }
|
||||
ShowMouseProc: DrawProc = Nil; { Show mouse procedure }
|
||||
MouseMoveProc: DrawProc = Nil; { Mouse moved procedure }
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF NO_WINDOW}
|
||||
PROCEDURE HideMouseCursor;
|
||||
PROCEDURE ShowMouseCursor;
|
||||
{$ENDIF}
|
||||
@ -1245,6 +1247,7 @@ ASM
|
||||
END;
|
||||
{$ENDIF}
|
||||
|
||||
|
||||
{$ifndef Use_API}
|
||||
{---------------------------------------------------------------------------}
|
||||
{ HookMouse -> Platforms DOS/DPMI - Updated 27Aug98 LdB }
|
||||
@ -1330,6 +1333,21 @@ END;
|
||||
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF USE_API}
|
||||
{$IFNDEF OS_DOS}
|
||||
PROCEDURE ShowMouseCursor;
|
||||
BEGIN
|
||||
ShowMouse;
|
||||
END;
|
||||
|
||||
PROCEDURE HideMouseCursor;
|
||||
BEGIN
|
||||
HideMouse;
|
||||
END;
|
||||
|
||||
{$ENDIF not OS_DOS}
|
||||
{$ENDIF USE_API}
|
||||
|
||||
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
|
||||
{ DOS/DPMI/WIN/NT/OS2 PRIVATE INTERNAL ROUTINES }
|
||||
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
|
||||
@ -1352,6 +1370,7 @@ END;
|
||||
{ DetectVideo -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 19May98 LdB }
|
||||
{---------------------------------------------------------------------------}
|
||||
{$ifdef Use_API}
|
||||
|
||||
procedure DetectVideo;
|
||||
VAR
|
||||
CurrMode : TVideoMode;
|
||||
@ -3019,7 +3038,10 @@ BEGIN
|
||||
END.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.6 2001-05-04 08:42:55 pierre
|
||||
Revision 1.7 2001-05-04 10:46:02 pierre
|
||||
* various fixes for win32 api mode
|
||||
|
||||
Revision 1.6 2001/05/04 08:42:55 pierre
|
||||
* some corrections for linux
|
||||
|
||||
Revision 1.5 2001/05/03 22:32:52 pierre
|
||||
|
@ -1022,6 +1022,7 @@ BEGIN
|
||||
If (P^.Command <> 0) AND (P^.Param <> Nil)
|
||||
Then S := S + ' - ' + P^.Param^; { Add any parameter }
|
||||
End;
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
HWindow := 0; { Must zero handle }
|
||||
Dc := 0; { Must zero context }
|
||||
@ -1030,6 +1031,7 @@ BEGIN
|
||||
HWindow := 0; { Must zero handle }
|
||||
Ps := 0; { Must zero pres space }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
L := TextWidth(S); { Width of string }
|
||||
If (L > W) Then W := L; { Hold maximum }
|
||||
Inc(H); { Inc count of items }
|
||||
@ -1674,8 +1676,11 @@ END;
|
||||
END.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.4 2001-04-10 21:57:55 pierre
|
||||
Revision 1.5 2001-05-04 10:46:02 pierre
|
||||
* various fixes for win32 api mode
|
||||
|
||||
Revision 1.4 2001/04/10 21:57:55 pierre
|
||||
+ first adds for Use_API define
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
66
fv/views.pas
66
fv/views.pas
@ -791,6 +791,7 @@ FUNCTION CreateIdScrollBar (X, Y, Size, Id: Integer; Horz: Boolean): PScrollBar;
|
||||
{ NEW WIN/NT/OS2 VERSION SPECIFIC INTERFACE ROUTINES }
|
||||
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
|
||||
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
{-TvViewMsgHandler---------------------------------------------------
|
||||
This is the default WIN/NT handler for TView objects. Descendant
|
||||
@ -815,6 +816,7 @@ interface.
|
||||
FUNCTION TvViewMsgHandler(Wnd: HWnd; Msg: ULong; Mp1, Mp2: MParam): MResult;
|
||||
CDECL; EXPORT;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
|
||||
{***************************************************************************}
|
||||
{ INITIALIZED PUBLIC VARIABLES }
|
||||
@ -1038,6 +1040,7 @@ CONST
|
||||
{ PRIVATE INTERNAL ROUTINES }
|
||||
{***************************************************************************}
|
||||
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
{---------------------------------------------------------------------------}
|
||||
{ TvViewMsgHandler -> Platforms WIN/NT - Updated 09Aug99 LdB }
|
||||
@ -1492,6 +1495,7 @@ BEGIN
|
||||
Msg, Mp1, Mp2); { Call default handler }
|
||||
END;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
|
||||
{***************************************************************************}
|
||||
{ OBJECT METHODS }
|
||||
@ -1778,9 +1782,9 @@ BEGIN
|
||||
I := Pos('~', S); { Check for tilde }
|
||||
If (I <> 0) Then System.Delete(S, I, 1); { Remove the tilde }
|
||||
Until (I = 0); { Remove all tildes }
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
TextWidth := Length(S) * SysFontWidth; { Calc text length }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
ODc := Dc; { Hold device context }
|
||||
If (Dc = 0) Then Begin { No context set }
|
||||
@ -1832,6 +1836,7 @@ BEGIN
|
||||
If (OPs = 0) Then WinReleasePS(Ps); { Release pres space }
|
||||
Ps := OPs; { Original pres space }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
{--TView--------------------------------------------------------------------}
|
||||
@ -1938,9 +1943,9 @@ BEGIN
|
||||
GetViewSettings(ViewPort, TextModeGFV); { Get set viewport }
|
||||
If OverlapsArea(ViewPort.X1, ViewPort.Y1,
|
||||
ViewPort.X2, ViewPort.Y2) Then Begin { Must be in area }
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
HideMouseCursor; { Hide mouse cursor }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin { Valid window }
|
||||
ODc := Dc; { Hold device context }
|
||||
@ -1951,6 +1956,7 @@ BEGIN
|
||||
OPs := Ps; { Hold paint struct }
|
||||
If (Ps = 0) Then Ps := WinGetPS(Client); { Create paint struct }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
If (DrawMask = 0) OR (DrawMask = vdNoChild) { No special masks set }
|
||||
Then Begin { Treat as a full redraw }
|
||||
DrawBackGround; { Draw background }
|
||||
@ -1975,9 +1981,9 @@ BEGIN
|
||||
If (DrawMask AND vdBorder <> 0) Then { Check border mask }
|
||||
DrawBorder; { Draw border }
|
||||
End;
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
ShowMouseCursor; { Show mouse cursor }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (ODc = 0) Then ReleaseDc(HWindow, Dc); { Release context }
|
||||
Dc := ODc; { Reset held context }
|
||||
@ -1988,6 +1994,7 @@ BEGIN
|
||||
Ps := OPs; { Reset held struct }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
End;
|
||||
ReleaseViewLimits; { Release the limits }
|
||||
End;
|
||||
@ -2001,6 +2008,7 @@ PROCEDURE TView.MakeFirst;
|
||||
BEGIN
|
||||
If (Owner <> Nil) Then Begin { Must have owner }
|
||||
PutInFrontOf(Owner^.First); { Float to the top }
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then { Valid window }
|
||||
SetWindowPos(HWindow, HWND_TOP, 0, 0, 0, 0,
|
||||
@ -2011,6 +2019,7 @@ BEGIN
|
||||
WinSetWindowPos(HWindow, HWND_TOP, 0, 0, 0, 0,
|
||||
swp_ZOrder); { Bring window to top }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
End;
|
||||
END;
|
||||
|
||||
@ -2403,12 +2412,12 @@ BEGIN
|
||||
If (Owner <> Nil) AND { valid owner }
|
||||
(Owner^.State AND sfExposed <> 0) { If owner exposed }
|
||||
Then SetState(sfExposed, Enable); { Expose this view }
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
If Enable Then DrawView Else { Draw the view }
|
||||
If (Owner <> Nil) Then Owner^.ReDrawArea( { Owner valid }
|
||||
RawOrigin.X, RawOrigin.Y, RawOrigin.X +
|
||||
RawSize.X, RawOrigin.Y + RawSize.Y); { Owner redraws area }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin { Window handle valid }
|
||||
If Enable Then ShowWindow(HWindow, sw_Show) { Show the window }
|
||||
@ -2423,6 +2432,7 @@ BEGIN
|
||||
swp_Hide); { Hide the window }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
If (Options AND ofSelectable <> 0) Then { View is selectable }
|
||||
If (Owner <> Nil) Then Owner^.ResetCurrent; { Reset selected }
|
||||
End;
|
||||
@ -2432,6 +2442,7 @@ BEGIN
|
||||
Else Command := cmReleasedFocus; { View losing focus }
|
||||
Message(Owner, evBroadcast, Command, @Self); { Send out message }
|
||||
End;
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then { Window handle valid }
|
||||
If Enable Then SetFocus(HWindow); { Focus the window }
|
||||
@ -2441,6 +2452,7 @@ BEGIN
|
||||
If Enable Then WinSetFocus(HWND_DESKTOP,
|
||||
HWindow); { Focus the window }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
If (GOptions AND goDrawFocus <> 0) Then Begin { Draw focus view }
|
||||
SetDrawMask(vdFocus); { Set focus draw mask }
|
||||
DrawView; { Redraw focus change }
|
||||
@ -2452,6 +2464,7 @@ BEGIN
|
||||
DrawView; { Redraw the cursor }
|
||||
End;
|
||||
If (AState AND sfDisabled <> 0) Then Begin { Disbale change }
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then { Window handle valid }
|
||||
If Enable Then EnableWindow(HWindow, False) { Disable the window }
|
||||
@ -2462,6 +2475,7 @@ BEGIN
|
||||
If Enable Then WinEnableWindow(HWindow,False) { Disable the window }
|
||||
Else WinEnableWindow(HWindow, True); { Enable the window }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
End;
|
||||
If (AState AND sfShadow <> 0) Then Begin End; { Change shadow state }
|
||||
END;
|
||||
@ -2530,7 +2544,7 @@ END;
|
||||
{ Locate -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 24Sep99 LdB }
|
||||
{---------------------------------------------------------------------------}
|
||||
PROCEDURE TView.Locate (Var Bounds: TRect);
|
||||
VAR {$IFDEF OS_DOS} X1, Y1, X2, Y2: Integer; {$ENDIF}
|
||||
VAR {$IFDEF NO_WINDOW} X1, Y1, X2, Y2: Integer; {$ENDIF}
|
||||
Min, Max: TPoint; R: TRect;
|
||||
|
||||
FUNCTION Range(Val, Min, Max: Integer): Integer;
|
||||
@ -2541,7 +2555,7 @@ VAR {$IFDEF OS_DOS} X1, Y1, X2, Y2: Integer; {$ENDIF}
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
X1 := RawOrigin.X; { Current x origin }
|
||||
Y1 := RawOrigin.Y; { Current y origin }
|
||||
X2 := RawOrigin.X + RawSize.X; { Current x size }
|
||||
@ -2555,12 +2569,12 @@ BEGIN
|
||||
GetBounds(R); { Current bounds }
|
||||
If NOT Bounds.Equals(R) Then Begin { Size has changed }
|
||||
ChangeBounds(Bounds); { Change bounds }
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
If (State AND sfVisible <> 0) AND { View is visible }
|
||||
(State AND sfExposed <> 0) AND (Owner <> Nil) { Check view exposed }
|
||||
Then Owner^.ReDrawArea(X1, Y1, X2, Y2); { Owner redraw }
|
||||
DrawView; { Redraw the view }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin { Valid window handle }
|
||||
If (Owner <> Nil) AND (Owner^.HWindow <> 0) { Valid owner }
|
||||
@ -2584,6 +2598,7 @@ BEGIN
|
||||
RawSize.X, RawSize.Y, swp_Size OR swp_Move); { Move window raw }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
End;
|
||||
END;
|
||||
|
||||
@ -4078,6 +4093,7 @@ BEGIN
|
||||
ClearPos(GetPos); { Clear old position }
|
||||
Min := AMin; { Set new minimum }
|
||||
Max := AMax; { Set new maximum }
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (GOptions AND goNativeClass <> 0) AND { In native class mode }
|
||||
(HWindow <> 0) Then
|
||||
@ -4092,6 +4108,7 @@ BEGIN
|
||||
(LongInt(Max-1) SHL 16) OR Min); { Post the message }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
{ This was removed as found not needed but if you
|
||||
change limits but value unchanged scrollbar is not redrawm..LdB }
|
||||
{If (Value = AValue) AND (State and sfVisible <> 0)
|
||||
@ -4106,6 +4123,7 @@ BEGIN
|
||||
SetDrawMask(vdInner); { Set draw masks }
|
||||
DrawView; { Redraw changed }
|
||||
End;
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (GOptions AND goNativeClass <> 0) AND { In native class mode }
|
||||
(HWindow <> 0) Then { Valid handle }
|
||||
@ -4117,6 +4135,7 @@ BEGIN
|
||||
WinSendMsg(HWindow, sbm_SetPos, Value, 0); { Dispatch the message }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not USE_API}
|
||||
If (State AND sfVisible <> 0) Then ScrollDraw; { Send update message }
|
||||
End;
|
||||
End;
|
||||
@ -4643,6 +4662,7 @@ BEGIN
|
||||
ColWidth := Size.X DIV NumCols + 1; { Calc column width }
|
||||
If (HScrollBar = Nil) Then Indent := 0 Else { Set indent to zero }
|
||||
Indent := HScrollBar^.Value; { Fetch any indent }
|
||||
{$IFNDEF USE_API}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (GOptions AND goNativeClass <> 0) Then Begin { Native class mode }
|
||||
If (Range <> SendMessage(HWindow, lb_GetCount,
|
||||
@ -4675,6 +4695,7 @@ BEGIN
|
||||
Exit; { Native mode is done }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not USE_API}
|
||||
Inherited DrawBackGround; { Call ancestor }
|
||||
Color := GetColor(2); { Normal colour }
|
||||
For I := 0 To Size.Y - 1 Do Begin { For each line }
|
||||
@ -4766,6 +4787,7 @@ BEGIN
|
||||
Focused := Item; { Set focus to item }
|
||||
If (VScrollBar <> Nil) Then
|
||||
VScrollBar^.SetValue(Item); { Scrollbar to value }
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (GOptions AND goNativeClass <> 0) Then Begin { Native class mode }
|
||||
If (HWindow <> 0) Then Begin { Check window valid }
|
||||
@ -4777,6 +4799,7 @@ BEGIN
|
||||
Exit; { Native mode done }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
If (Item < TopItem) Then { Item above top item }
|
||||
If (NumCols = 1) Then TopItem := Item { Set top item }
|
||||
Else TopItem := Item - Item MOD Size.Y { Set top item }
|
||||
@ -4792,11 +4815,13 @@ END;
|
||||
PROCEDURE TListViewer.SetTopItem (Item: Integer);
|
||||
BEGIN
|
||||
TopItem := Item; { Set the top item }
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (GOptions AND goNativeClass <> 0) AND { Native class mode }
|
||||
(HWindow <> 0) Then { Window valid }
|
||||
SendMessage(HWindow, lb_SetTopIndex, Item, 0); { Synchronize }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
{--TListViewer--------------------------------------------------------------}
|
||||
@ -5449,11 +5474,11 @@ END;
|
||||
{ GraphLine -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 22Sep99 LdB }
|
||||
{---------------------------------------------------------------------------}
|
||||
PROCEDURE TView.GraphLine (X1, Y1, X2, Y2: Integer; Colour: Byte);
|
||||
{$IFDEF OS_DOS} VAR ViewPort: ViewPortType; {$ENDIF} { DOS/DPMI VARIABLES }
|
||||
{$IFDEF NO_WINDOW} VAR ViewPort: ViewPortType; {$ENDIF} { DOS/DPMI VARIABLES }
|
||||
{$IFDEF OS_WINDOWS}VAR I: Word; ODc: hDc; {$ENDIF} { WIN/NT VARIABLES }
|
||||
{$IFDEF OS_OS2}VAR I: LongInt; Lp: PointL; OPs: HPs; {$ENDIF}{ OS2 VARIABLES }
|
||||
BEGIN
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
GetViewSettings(ViewPort, TextModeGFV); { Get viewport settings }
|
||||
If (TextModeGFV <> TRUE) Then Begin
|
||||
SetColor(Colour); { Set line colour }
|
||||
@ -5463,6 +5488,7 @@ BEGIN
|
||||
End Else Begin { LEON???? }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin { Valid window }
|
||||
X1 := X1 - FrameSize; { Adjust X1 for frame }
|
||||
@ -5519,6 +5545,7 @@ BEGIN
|
||||
Ps := OPs; { Reset held struct }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
PROCEDURE TView.GraphRectangle (X1, Y1, X2, Y2: Integer; Colour: Byte);
|
||||
@ -5536,6 +5563,7 @@ BEGIN
|
||||
End Else Begin { LEON???? }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin { Valid window }
|
||||
X1 := X1 - FrameSize;
|
||||
@ -5594,6 +5622,7 @@ BEGIN
|
||||
Ps := OPs; { Reset held struct }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
{--TView--------------------------------------------------------------------}
|
||||
@ -5686,6 +5715,7 @@ Colour: Byte);
|
||||
CONST RadConv = 57.2957795130823229; { Degrees per radian }
|
||||
VAR X1, Y1, X2, Y2, X3, Y3: Integer; {$IFDEF OS_WINDOWS} ODc: hDc; {$ENDIF}
|
||||
BEGIN
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS}
|
||||
Xc := Xc - FrameSize;
|
||||
Yc := Yc - CaptSize;
|
||||
@ -5721,6 +5751,7 @@ BEGIN
|
||||
Dc := ODc; { Reset held context }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
PROCEDURE TView.FilletArc (Xc, Yc: Integer; Sa, Ea: Real; XRad, YRad, Ht: Integer;
|
||||
@ -5728,6 +5759,7 @@ Colour: Byte);
|
||||
CONST RadConv = 57.2957795130823229; { Degrees per radian }
|
||||
{$IFDEF OS_WINDOWS} VAR X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer; ODc: hDc; {$ENDIF}
|
||||
BEGIN
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS}
|
||||
If (HWindow <> 0) Then Begin { Valid window }
|
||||
Xc := Xc - FrameSize;
|
||||
@ -5772,6 +5804,7 @@ BEGIN
|
||||
Dc := ODc; { Reset held context }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
{--TView--------------------------------------------------------------------}
|
||||
@ -6798,7 +6831,10 @@ END.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.6 2001-05-04 08:42:56 pierre
|
||||
Revision 1.7 2001-05-04 10:46:03 pierre
|
||||
* various fixes for win32 api mode
|
||||
|
||||
Revision 1.6 2001/05/04 08:42:56 pierre
|
||||
* some corrections for linux
|
||||
|
||||
Revision 1.5 2001/05/03 22:32:52 pierre
|
||||
|
@ -718,6 +718,7 @@ CONST
|
||||
{ PRIVATE INTERNAL ROUTINES }
|
||||
{***************************************************************************}
|
||||
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
{---------------------------------------------------------------------------}
|
||||
{ TvClusterMsgHandler -> Platforms WIN/NT - Checked 08Jun98 LdB }
|
||||
@ -786,6 +787,7 @@ BEGIN
|
||||
iMessage, wParam, lParam); { Call TV view handler }
|
||||
END;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
|
||||
{---------------------------------------------------------------------------}
|
||||
{ IsBlank -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 08Jun98 LdB }
|
||||
@ -1064,12 +1066,14 @@ END;
|
||||
{---------------------------------------------------------------------------}
|
||||
PROCEDURE TInputLine.DrawBackGround;
|
||||
BEGIN
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then DestroyCaret; { Destroy any caret }
|
||||
{$ENDIF}
|
||||
{$IFDEF OS_OS2} { OS2 CODE }
|
||||
If (HWindow <> 0) Then WinDestroyCursor(HWindow); { Destroy any caret }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
Inherited DrawBackGround; { Call ancestor }
|
||||
END;
|
||||
|
||||
@ -1090,13 +1094,13 @@ BEGIN
|
||||
I := TextWidth(Data^[CurPos+1]) { Insert caret width }
|
||||
Else I := FontWidth; { At end use fontwidth }
|
||||
End;
|
||||
{$IFDEF OS_DOS}
|
||||
{$IFDEF NO_WINDOW}
|
||||
If (State AND sfCursorIns <> 0) Then Begin { Insert mode }
|
||||
If ((CurPos+1) <= Length(Data^)) Then { Not beyond end }
|
||||
WriteStr(-X, 0, Data^[CurPos+1], 5) { Create block cursor }
|
||||
Else ClearArea(X, 0, X+I, FontHeight, Green);{ Line cursor }
|
||||
End Else ClearArea(X, 0, X+I, FontHeight, Green);{ Line cursor }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin
|
||||
CreateCaret(HWindow, 0, I, FontHeight); { Create a craet }
|
||||
@ -1113,6 +1117,7 @@ BEGIN
|
||||
WinShowCursor(HWindow, True); { Show the caret }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
End;
|
||||
END;
|
||||
|
||||
@ -3219,7 +3224,10 @@ END;
|
||||
END.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.5 2001-05-04 08:42:54 pierre
|
||||
Revision 1.6 2001-05-04 10:46:01 pierre
|
||||
* various fixes for win32 api mode
|
||||
|
||||
Revision 1.5 2001/05/04 08:42:54 pierre
|
||||
* some corrections for linux
|
||||
|
||||
Revision 1.4 2001/05/03 22:32:52 pierre
|
||||
|
@ -597,7 +597,9 @@ CONST
|
||||
HideMouseProc: DrawProc = Nil; { Hide mouse procedure }
|
||||
ShowMouseProc: DrawProc = Nil; { Show mouse procedure }
|
||||
MouseMoveProc: DrawProc = Nil; { Mouse moved procedure }
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF NO_WINDOW}
|
||||
PROCEDURE HideMouseCursor;
|
||||
PROCEDURE ShowMouseCursor;
|
||||
{$ENDIF}
|
||||
@ -1245,6 +1247,7 @@ ASM
|
||||
END;
|
||||
{$ENDIF}
|
||||
|
||||
|
||||
{$ifndef Use_API}
|
||||
{---------------------------------------------------------------------------}
|
||||
{ HookMouse -> Platforms DOS/DPMI - Updated 27Aug98 LdB }
|
||||
@ -1330,6 +1333,21 @@ END;
|
||||
|
||||
{$ENDIF}
|
||||
|
||||
{$IFDEF USE_API}
|
||||
{$IFNDEF OS_DOS}
|
||||
PROCEDURE ShowMouseCursor;
|
||||
BEGIN
|
||||
ShowMouse;
|
||||
END;
|
||||
|
||||
PROCEDURE HideMouseCursor;
|
||||
BEGIN
|
||||
HideMouse;
|
||||
END;
|
||||
|
||||
{$ENDIF not OS_DOS}
|
||||
{$ENDIF USE_API}
|
||||
|
||||
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
|
||||
{ DOS/DPMI/WIN/NT/OS2 PRIVATE INTERNAL ROUTINES }
|
||||
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
|
||||
@ -1352,6 +1370,7 @@ END;
|
||||
{ DetectVideo -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 19May98 LdB }
|
||||
{---------------------------------------------------------------------------}
|
||||
{$ifdef Use_API}
|
||||
|
||||
procedure DetectVideo;
|
||||
VAR
|
||||
CurrMode : TVideoMode;
|
||||
@ -3019,7 +3038,10 @@ BEGIN
|
||||
END.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.6 2001-05-04 08:42:55 pierre
|
||||
Revision 1.7 2001-05-04 10:46:02 pierre
|
||||
* various fixes for win32 api mode
|
||||
|
||||
Revision 1.6 2001/05/04 08:42:55 pierre
|
||||
* some corrections for linux
|
||||
|
||||
Revision 1.5 2001/05/03 22:32:52 pierre
|
||||
|
@ -1022,6 +1022,7 @@ BEGIN
|
||||
If (P^.Command <> 0) AND (P^.Param <> Nil)
|
||||
Then S := S + ' - ' + P^.Param^; { Add any parameter }
|
||||
End;
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
HWindow := 0; { Must zero handle }
|
||||
Dc := 0; { Must zero context }
|
||||
@ -1030,6 +1031,7 @@ BEGIN
|
||||
HWindow := 0; { Must zero handle }
|
||||
Ps := 0; { Must zero pres space }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
L := TextWidth(S); { Width of string }
|
||||
If (L > W) Then W := L; { Hold maximum }
|
||||
Inc(H); { Inc count of items }
|
||||
@ -1674,8 +1676,11 @@ END;
|
||||
END.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.4 2001-04-10 21:57:55 pierre
|
||||
Revision 1.5 2001-05-04 10:46:02 pierre
|
||||
* various fixes for win32 api mode
|
||||
|
||||
Revision 1.4 2001/04/10 21:57:55 pierre
|
||||
+ first adds for Use_API define
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
|
@ -34,12 +34,18 @@ PROGRAM TestApp;
|
||||
|
||||
{$I Platform.inc}
|
||||
USES
|
||||
{$IFDEF OS_OS2} Os2Def, os2PmApi, Drivers, {$ENDIF}
|
||||
Objects, Views, Menus, Dialogs, App, { Standard GFV units }
|
||||
{$IFDEF OS_OS2} Os2Def, os2PmApi, {$ENDIF}
|
||||
Objects, Drivers, Views, Menus, Dialogs, App, { Standard GFV units }
|
||||
Gadgets;
|
||||
|
||||
|
||||
CONST cmAppToolbar = 1000;
|
||||
cmWindow1 = 1001;
|
||||
cmWindow2 = 1002;
|
||||
cmWindow3 = 1003;
|
||||
cmCloseWindow1 = 1101;
|
||||
cmCloseWindow2 = 1102;
|
||||
cmCloseWindow3 = 1103;
|
||||
|
||||
{---------------------------------------------------------------------------}
|
||||
{ TTestAppp OBJECT - STANDARD APPLICATION WITH MENU }
|
||||
@ -49,10 +55,16 @@ TYPE
|
||||
TTVDemo = OBJECT (TApplication)
|
||||
Clock: PClockView;
|
||||
Heap: PHeapView;
|
||||
P1,P2,P3 : PGroup;
|
||||
CONSTRUCTOR Init;
|
||||
PROCEDURE Idle; Virtual;
|
||||
PROCEDURE HandleEvent(var Event : TEvent);virtual;
|
||||
PROCEDURE InitMenuBar; Virtual;
|
||||
PROCEDURE InitDeskTop; Virtual;
|
||||
PROCEDURE Window1;
|
||||
PROCEDURE Window2;
|
||||
PROCEDURE Window3;
|
||||
PROCEDURE CloseWindow(var P : PGroup);
|
||||
End;
|
||||
|
||||
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
|
||||
@ -95,6 +107,23 @@ begin
|
||||
DisableCommands([cmTile, cmCascade]);
|
||||
end;
|
||||
|
||||
PROCEDURE TTVDemo.HandleEvent(var Event : TEvent);
|
||||
BEGIN
|
||||
Inherited HandleEvent(Event); { Call ancestor }
|
||||
If (Event.What = evCommand) Then Begin
|
||||
Case Event.Command Of
|
||||
cmWindow1 : Window1;
|
||||
cmWindow2 : Window2;
|
||||
cmWindow3 : Window3;
|
||||
cmCloseWindow1 : CloseWindow(P1);
|
||||
cmCloseWindow2 : CloseWindow(P2);
|
||||
cmCloseWindow3 : CloseWindow(P3);
|
||||
Else Exit; { Unhandled exit }
|
||||
End;
|
||||
End;
|
||||
ClearEvent(Event);
|
||||
END;
|
||||
|
||||
{--TTvDemo------------------------------------------------------------------}
|
||||
{ InitMenuBar -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 05Nov99 LdB }
|
||||
{---------------------------------------------------------------------------}
|
||||
@ -108,8 +137,16 @@ BEGIN
|
||||
StdFileMenuItems(Nil)), { Standard file menu }
|
||||
NewSubMenu('~E~dit', 0, NewMenu(
|
||||
StdEditMenuItems(Nil)), { Standard edit menu }
|
||||
NewSubMenu('~T~est', 0, NewMenu(
|
||||
NewItem('Window 1','',kbNoKey,cmWindow1,hcNoContext,
|
||||
NewItem('Window 2','',kbNoKey,cmWindow2,hcNoContext,
|
||||
NewItem('Window 3','',kbNoKey,cmWindow3,hcNoContext,
|
||||
NewItem('Close Window 1','',kbNoKey,cmCloseWindow1,hcNoContext,
|
||||
NewItem('Close Window 2','',kbNoKey,cmCloseWindow2,hcNoContext,
|
||||
NewItem('Close Window 3','',kbNoKey,cmCloseWindow3,hcNoContext,
|
||||
Nil))))))), { Standard edit menu }
|
||||
NewSubMenu('~W~indow', 0, NewMenu(
|
||||
StdWindowMenuItems(Nil)), Nil)))))); { Standard window menu }
|
||||
StdWindowMenuItems(Nil)), Nil))))))); { Standard window menu }
|
||||
END;
|
||||
|
||||
{--TTvDemo------------------------------------------------------------------}
|
||||
@ -140,21 +177,9 @@ BEGIN
|
||||
Desktop := New(PDeskTop, Init(R));
|
||||
END;
|
||||
|
||||
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
|
||||
{ MAIN PROGRAM START }
|
||||
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
|
||||
VAR I: Integer; R: TRect; P: PGroup; B: PScrollBar;
|
||||
List: PStrCollection; Lb: PListBox; MyApp: TTvDemo;
|
||||
{$IFDEF OS_OS2} Message: QMSg; Event: TEvent; {$ENDIF}
|
||||
PROCEDURE TTvDemo.Window1;
|
||||
VAR R: TRect; P: PGroup;
|
||||
BEGIN
|
||||
(*SystemPalette := CreateRGBPalette(256); { Create palette }
|
||||
For I := 0 To 15 Do Begin
|
||||
GetSystemRGBEntry(I, RGB); { Get palette entry }
|
||||
AddToRGBPalette(RGB, SystemPalette); { Add entry to palette }
|
||||
End;*)
|
||||
|
||||
MyApp.Init; { Initialize app }
|
||||
|
||||
{ Create a basic window with static text and radio }
|
||||
{ buttons. The buttons should be orange and white }
|
||||
R.Assign(5, 1, 35, 16); { Assign area }
|
||||
@ -162,6 +187,7 @@ BEGIN
|
||||
If (P <> Nil) Then Begin { Window valid }
|
||||
R.Assign(5, 5, 20, 7); { Assign area }
|
||||
P^.Insert(New(PInputLine, Init(R, 30)));
|
||||
R.Assign(5, 8, 20, 9); { Assign area }
|
||||
P^.Insert(New(PRadioButtons, Init(R,
|
||||
NewSItem('Test',
|
||||
NewSITem('Item 2', Nil))))); { Red radio button }
|
||||
@ -170,7 +196,21 @@ BEGIN
|
||||
'SOME STATIC TEXT'))); { Insert static text }
|
||||
End;
|
||||
Desktop^.Insert(P); { Insert into desktop }
|
||||
P1:=P;
|
||||
END;
|
||||
|
||||
PROCEDURE TTvDemo.CloseWindow(var P : PGroup);
|
||||
BEGIN
|
||||
If Assigned(P) then
|
||||
BEGIN
|
||||
Desktop^.Delete(P);
|
||||
Dispose(P,Done);
|
||||
P:=Nil;
|
||||
END;
|
||||
END;
|
||||
PROCEDURE TTvDemo.Window2;
|
||||
VAR R: TRect; P: PGroup;
|
||||
BEGIN
|
||||
{ Create a basic window with check boxes. The }
|
||||
{ check boxes should be orange and white }
|
||||
R.Assign(15, 3, 45, 18); { Assign area }
|
||||
@ -182,7 +222,13 @@ BEGIN
|
||||
NewSITem('Item 2', Nil))))); { Create check box }
|
||||
End;
|
||||
Desktop^.Insert(P); { Insert into desktop }
|
||||
P2:=P;
|
||||
END;
|
||||
|
||||
PROCEDURE TTvDemo.Window3;
|
||||
VAR R: TRect; P: PGroup; B: PScrollBar;
|
||||
List: PStrCollection; Lb: PListBox;
|
||||
BEGIN
|
||||
{ Create a basic dialog box. In it are buttons, }
|
||||
{ list boxes, scrollbars, inputlines, checkboxes }
|
||||
R.Assign(32, 2, 77, 18); { Assign screen area }
|
||||
@ -225,7 +271,25 @@ BEGIN
|
||||
P^.Insert(New(PButton, Init(R, '~O~k', 100, bfGrabFocus)));{ Create okay button }
|
||||
R.Assign(30, 15, 40, 17); { Assign area }
|
||||
Desktop^.Insert(P); { Insert dialog }
|
||||
P3:=P;
|
||||
End;
|
||||
END;
|
||||
|
||||
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
|
||||
{ MAIN PROGRAM START }
|
||||
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
|
||||
VAR I: Integer; R: TRect; P: PGroup; MyApp: TTvDemo;
|
||||
{$IFDEF OS_OS2} Message: QMSg; Event: TEvent; {$ENDIF}
|
||||
BEGIN
|
||||
(*SystemPalette := CreateRGBPalette(256); { Create palette }
|
||||
For I := 0 To 15 Do Begin
|
||||
GetSystemRGBEntry(I, RGB); { Get palette entry }
|
||||
AddToRGBPalette(RGB, SystemPalette); { Add entry to palette }
|
||||
End;*)
|
||||
|
||||
MyApp.Init; { Initialize app }
|
||||
|
||||
|
||||
MyApp.Run; { Run the app }
|
||||
{$IFDEF OS_OS2}
|
||||
while (MyApp.EndState = 0)
|
||||
@ -244,7 +308,10 @@ END.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.3 2001-05-04 08:42:55 pierre
|
||||
Revision 1.4 2001-05-04 10:46:02 pierre
|
||||
* various fixes for win32 api mode
|
||||
|
||||
Revision 1.3 2001/05/04 08:42:55 pierre
|
||||
* some corrections for linux
|
||||
|
||||
Revision 1.2 2000/08/24 12:00:22 marco
|
||||
|
@ -791,6 +791,7 @@ FUNCTION CreateIdScrollBar (X, Y, Size, Id: Integer; Horz: Boolean): PScrollBar;
|
||||
{ NEW WIN/NT/OS2 VERSION SPECIFIC INTERFACE ROUTINES }
|
||||
{+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++}
|
||||
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
{-TvViewMsgHandler---------------------------------------------------
|
||||
This is the default WIN/NT handler for TView objects. Descendant
|
||||
@ -815,6 +816,7 @@ interface.
|
||||
FUNCTION TvViewMsgHandler(Wnd: HWnd; Msg: ULong; Mp1, Mp2: MParam): MResult;
|
||||
CDECL; EXPORT;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
|
||||
{***************************************************************************}
|
||||
{ INITIALIZED PUBLIC VARIABLES }
|
||||
@ -1038,6 +1040,7 @@ CONST
|
||||
{ PRIVATE INTERNAL ROUTINES }
|
||||
{***************************************************************************}
|
||||
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
{---------------------------------------------------------------------------}
|
||||
{ TvViewMsgHandler -> Platforms WIN/NT - Updated 09Aug99 LdB }
|
||||
@ -1492,6 +1495,7 @@ BEGIN
|
||||
Msg, Mp1, Mp2); { Call default handler }
|
||||
END;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
|
||||
{***************************************************************************}
|
||||
{ OBJECT METHODS }
|
||||
@ -1778,9 +1782,9 @@ BEGIN
|
||||
I := Pos('~', S); { Check for tilde }
|
||||
If (I <> 0) Then System.Delete(S, I, 1); { Remove the tilde }
|
||||
Until (I = 0); { Remove all tildes }
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
TextWidth := Length(S) * SysFontWidth; { Calc text length }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
ODc := Dc; { Hold device context }
|
||||
If (Dc = 0) Then Begin { No context set }
|
||||
@ -1832,6 +1836,7 @@ BEGIN
|
||||
If (OPs = 0) Then WinReleasePS(Ps); { Release pres space }
|
||||
Ps := OPs; { Original pres space }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
{--TView--------------------------------------------------------------------}
|
||||
@ -1938,9 +1943,9 @@ BEGIN
|
||||
GetViewSettings(ViewPort, TextModeGFV); { Get set viewport }
|
||||
If OverlapsArea(ViewPort.X1, ViewPort.Y1,
|
||||
ViewPort.X2, ViewPort.Y2) Then Begin { Must be in area }
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
HideMouseCursor; { Hide mouse cursor }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin { Valid window }
|
||||
ODc := Dc; { Hold device context }
|
||||
@ -1951,6 +1956,7 @@ BEGIN
|
||||
OPs := Ps; { Hold paint struct }
|
||||
If (Ps = 0) Then Ps := WinGetPS(Client); { Create paint struct }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
If (DrawMask = 0) OR (DrawMask = vdNoChild) { No special masks set }
|
||||
Then Begin { Treat as a full redraw }
|
||||
DrawBackGround; { Draw background }
|
||||
@ -1975,9 +1981,9 @@ BEGIN
|
||||
If (DrawMask AND vdBorder <> 0) Then { Check border mask }
|
||||
DrawBorder; { Draw border }
|
||||
End;
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
ShowMouseCursor; { Show mouse cursor }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (ODc = 0) Then ReleaseDc(HWindow, Dc); { Release context }
|
||||
Dc := ODc; { Reset held context }
|
||||
@ -1988,6 +1994,7 @@ BEGIN
|
||||
Ps := OPs; { Reset held struct }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
End;
|
||||
ReleaseViewLimits; { Release the limits }
|
||||
End;
|
||||
@ -2001,6 +2008,7 @@ PROCEDURE TView.MakeFirst;
|
||||
BEGIN
|
||||
If (Owner <> Nil) Then Begin { Must have owner }
|
||||
PutInFrontOf(Owner^.First); { Float to the top }
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then { Valid window }
|
||||
SetWindowPos(HWindow, HWND_TOP, 0, 0, 0, 0,
|
||||
@ -2011,6 +2019,7 @@ BEGIN
|
||||
WinSetWindowPos(HWindow, HWND_TOP, 0, 0, 0, 0,
|
||||
swp_ZOrder); { Bring window to top }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
End;
|
||||
END;
|
||||
|
||||
@ -2403,12 +2412,12 @@ BEGIN
|
||||
If (Owner <> Nil) AND { valid owner }
|
||||
(Owner^.State AND sfExposed <> 0) { If owner exposed }
|
||||
Then SetState(sfExposed, Enable); { Expose this view }
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
If Enable Then DrawView Else { Draw the view }
|
||||
If (Owner <> Nil) Then Owner^.ReDrawArea( { Owner valid }
|
||||
RawOrigin.X, RawOrigin.Y, RawOrigin.X +
|
||||
RawSize.X, RawOrigin.Y + RawSize.Y); { Owner redraws area }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin { Window handle valid }
|
||||
If Enable Then ShowWindow(HWindow, sw_Show) { Show the window }
|
||||
@ -2423,6 +2432,7 @@ BEGIN
|
||||
swp_Hide); { Hide the window }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
If (Options AND ofSelectable <> 0) Then { View is selectable }
|
||||
If (Owner <> Nil) Then Owner^.ResetCurrent; { Reset selected }
|
||||
End;
|
||||
@ -2432,6 +2442,7 @@ BEGIN
|
||||
Else Command := cmReleasedFocus; { View losing focus }
|
||||
Message(Owner, evBroadcast, Command, @Self); { Send out message }
|
||||
End;
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then { Window handle valid }
|
||||
If Enable Then SetFocus(HWindow); { Focus the window }
|
||||
@ -2441,6 +2452,7 @@ BEGIN
|
||||
If Enable Then WinSetFocus(HWND_DESKTOP,
|
||||
HWindow); { Focus the window }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
If (GOptions AND goDrawFocus <> 0) Then Begin { Draw focus view }
|
||||
SetDrawMask(vdFocus); { Set focus draw mask }
|
||||
DrawView; { Redraw focus change }
|
||||
@ -2452,6 +2464,7 @@ BEGIN
|
||||
DrawView; { Redraw the cursor }
|
||||
End;
|
||||
If (AState AND sfDisabled <> 0) Then Begin { Disbale change }
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then { Window handle valid }
|
||||
If Enable Then EnableWindow(HWindow, False) { Disable the window }
|
||||
@ -2462,6 +2475,7 @@ BEGIN
|
||||
If Enable Then WinEnableWindow(HWindow,False) { Disable the window }
|
||||
Else WinEnableWindow(HWindow, True); { Enable the window }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
End;
|
||||
If (AState AND sfShadow <> 0) Then Begin End; { Change shadow state }
|
||||
END;
|
||||
@ -2530,7 +2544,7 @@ END;
|
||||
{ Locate -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 24Sep99 LdB }
|
||||
{---------------------------------------------------------------------------}
|
||||
PROCEDURE TView.Locate (Var Bounds: TRect);
|
||||
VAR {$IFDEF OS_DOS} X1, Y1, X2, Y2: Integer; {$ENDIF}
|
||||
VAR {$IFDEF NO_WINDOW} X1, Y1, X2, Y2: Integer; {$ENDIF}
|
||||
Min, Max: TPoint; R: TRect;
|
||||
|
||||
FUNCTION Range(Val, Min, Max: Integer): Integer;
|
||||
@ -2541,7 +2555,7 @@ VAR {$IFDEF OS_DOS} X1, Y1, X2, Y2: Integer; {$ENDIF}
|
||||
END;
|
||||
|
||||
BEGIN
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
X1 := RawOrigin.X; { Current x origin }
|
||||
Y1 := RawOrigin.Y; { Current y origin }
|
||||
X2 := RawOrigin.X + RawSize.X; { Current x size }
|
||||
@ -2555,12 +2569,12 @@ BEGIN
|
||||
GetBounds(R); { Current bounds }
|
||||
If NOT Bounds.Equals(R) Then Begin { Size has changed }
|
||||
ChangeBounds(Bounds); { Change bounds }
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF NO_WINDOW} { DOS/DPMI CODE }
|
||||
If (State AND sfVisible <> 0) AND { View is visible }
|
||||
(State AND sfExposed <> 0) AND (Owner <> Nil) { Check view exposed }
|
||||
Then Owner^.ReDrawArea(X1, Y1, X2, Y2); { Owner redraw }
|
||||
DrawView; { Redraw the view }
|
||||
{$ENDIF}
|
||||
{$ELSE not NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin { Valid window handle }
|
||||
If (Owner <> Nil) AND (Owner^.HWindow <> 0) { Valid owner }
|
||||
@ -2584,6 +2598,7 @@ BEGIN
|
||||
RawSize.X, RawSize.Y, swp_Size OR swp_Move); { Move window raw }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
End;
|
||||
END;
|
||||
|
||||
@ -4078,6 +4093,7 @@ BEGIN
|
||||
ClearPos(GetPos); { Clear old position }
|
||||
Min := AMin; { Set new minimum }
|
||||
Max := AMax; { Set new maximum }
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (GOptions AND goNativeClass <> 0) AND { In native class mode }
|
||||
(HWindow <> 0) Then
|
||||
@ -4092,6 +4108,7 @@ BEGIN
|
||||
(LongInt(Max-1) SHL 16) OR Min); { Post the message }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
{ This was removed as found not needed but if you
|
||||
change limits but value unchanged scrollbar is not redrawm..LdB }
|
||||
{If (Value = AValue) AND (State and sfVisible <> 0)
|
||||
@ -4106,6 +4123,7 @@ BEGIN
|
||||
SetDrawMask(vdInner); { Set draw masks }
|
||||
DrawView; { Redraw changed }
|
||||
End;
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (GOptions AND goNativeClass <> 0) AND { In native class mode }
|
||||
(HWindow <> 0) Then { Valid handle }
|
||||
@ -4117,6 +4135,7 @@ BEGIN
|
||||
WinSendMsg(HWindow, sbm_SetPos, Value, 0); { Dispatch the message }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not USE_API}
|
||||
If (State AND sfVisible <> 0) Then ScrollDraw; { Send update message }
|
||||
End;
|
||||
End;
|
||||
@ -4643,6 +4662,7 @@ BEGIN
|
||||
ColWidth := Size.X DIV NumCols + 1; { Calc column width }
|
||||
If (HScrollBar = Nil) Then Indent := 0 Else { Set indent to zero }
|
||||
Indent := HScrollBar^.Value; { Fetch any indent }
|
||||
{$IFNDEF USE_API}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (GOptions AND goNativeClass <> 0) Then Begin { Native class mode }
|
||||
If (Range <> SendMessage(HWindow, lb_GetCount,
|
||||
@ -4675,6 +4695,7 @@ BEGIN
|
||||
Exit; { Native mode is done }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not USE_API}
|
||||
Inherited DrawBackGround; { Call ancestor }
|
||||
Color := GetColor(2); { Normal colour }
|
||||
For I := 0 To Size.Y - 1 Do Begin { For each line }
|
||||
@ -4766,6 +4787,7 @@ BEGIN
|
||||
Focused := Item; { Set focus to item }
|
||||
If (VScrollBar <> Nil) Then
|
||||
VScrollBar^.SetValue(Item); { Scrollbar to value }
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (GOptions AND goNativeClass <> 0) Then Begin { Native class mode }
|
||||
If (HWindow <> 0) Then Begin { Check window valid }
|
||||
@ -4777,6 +4799,7 @@ BEGIN
|
||||
Exit; { Native mode done }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
If (Item < TopItem) Then { Item above top item }
|
||||
If (NumCols = 1) Then TopItem := Item { Set top item }
|
||||
Else TopItem := Item - Item MOD Size.Y { Set top item }
|
||||
@ -4792,11 +4815,13 @@ END;
|
||||
PROCEDURE TListViewer.SetTopItem (Item: Integer);
|
||||
BEGIN
|
||||
TopItem := Item; { Set the top item }
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (GOptions AND goNativeClass <> 0) AND { Native class mode }
|
||||
(HWindow <> 0) Then { Window valid }
|
||||
SendMessage(HWindow, lb_SetTopIndex, Item, 0); { Synchronize }
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
{--TListViewer--------------------------------------------------------------}
|
||||
@ -5449,11 +5474,11 @@ END;
|
||||
{ GraphLine -> Platforms DOS/DPMI/WIN/NT/OS2 - Updated 22Sep99 LdB }
|
||||
{---------------------------------------------------------------------------}
|
||||
PROCEDURE TView.GraphLine (X1, Y1, X2, Y2: Integer; Colour: Byte);
|
||||
{$IFDEF OS_DOS} VAR ViewPort: ViewPortType; {$ENDIF} { DOS/DPMI VARIABLES }
|
||||
{$IFDEF NO_WINDOW} VAR ViewPort: ViewPortType; {$ENDIF} { DOS/DPMI VARIABLES }
|
||||
{$IFDEF OS_WINDOWS}VAR I: Word; ODc: hDc; {$ENDIF} { WIN/NT VARIABLES }
|
||||
{$IFDEF OS_OS2}VAR I: LongInt; Lp: PointL; OPs: HPs; {$ENDIF}{ OS2 VARIABLES }
|
||||
BEGIN
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
{$IFDEF OS_DOS} { DOS/DPMI CODE }
|
||||
GetViewSettings(ViewPort, TextModeGFV); { Get viewport settings }
|
||||
If (TextModeGFV <> TRUE) Then Begin
|
||||
SetColor(Colour); { Set line colour }
|
||||
@ -5463,6 +5488,7 @@ BEGIN
|
||||
End Else Begin { LEON???? }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin { Valid window }
|
||||
X1 := X1 - FrameSize; { Adjust X1 for frame }
|
||||
@ -5519,6 +5545,7 @@ BEGIN
|
||||
Ps := OPs; { Reset held struct }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
PROCEDURE TView.GraphRectangle (X1, Y1, X2, Y2: Integer; Colour: Byte);
|
||||
@ -5536,6 +5563,7 @@ BEGIN
|
||||
End Else Begin { LEON???? }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS} { WIN/NT CODE }
|
||||
If (HWindow <> 0) Then Begin { Valid window }
|
||||
X1 := X1 - FrameSize;
|
||||
@ -5594,6 +5622,7 @@ BEGIN
|
||||
Ps := OPs; { Reset held struct }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
{--TView--------------------------------------------------------------------}
|
||||
@ -5686,6 +5715,7 @@ Colour: Byte);
|
||||
CONST RadConv = 57.2957795130823229; { Degrees per radian }
|
||||
VAR X1, Y1, X2, Y2, X3, Y3: Integer; {$IFDEF OS_WINDOWS} ODc: hDc; {$ENDIF}
|
||||
BEGIN
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS}
|
||||
Xc := Xc - FrameSize;
|
||||
Yc := Yc - CaptSize;
|
||||
@ -5721,6 +5751,7 @@ BEGIN
|
||||
Dc := ODc; { Reset held context }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
PROCEDURE TView.FilletArc (Xc, Yc: Integer; Sa, Ea: Real; XRad, YRad, Ht: Integer;
|
||||
@ -5728,6 +5759,7 @@ Colour: Byte);
|
||||
CONST RadConv = 57.2957795130823229; { Degrees per radian }
|
||||
{$IFDEF OS_WINDOWS} VAR X1, Y1, X2, Y2, X3, Y3, X4, Y4: Integer; ODc: hDc; {$ENDIF}
|
||||
BEGIN
|
||||
{$IFNDEF NO_WINDOW}
|
||||
{$IFDEF OS_WINDOWS}
|
||||
If (HWindow <> 0) Then Begin { Valid window }
|
||||
Xc := Xc - FrameSize;
|
||||
@ -5772,6 +5804,7 @@ BEGIN
|
||||
Dc := ODc; { Reset held context }
|
||||
End;
|
||||
{$ENDIF}
|
||||
{$ENDIF not NO_WINDOW}
|
||||
END;
|
||||
|
||||
{--TView--------------------------------------------------------------------}
|
||||
@ -6798,7 +6831,10 @@ END.
|
||||
|
||||
{
|
||||
$Log$
|
||||
Revision 1.6 2001-05-04 08:42:56 pierre
|
||||
Revision 1.7 2001-05-04 10:46:03 pierre
|
||||
* various fixes for win32 api mode
|
||||
|
||||
Revision 1.6 2001/05/04 08:42:56 pierre
|
||||
* some corrections for linux
|
||||
|
||||
Revision 1.5 2001/05/03 22:32:52 pierre
|
||||
|
Loading…
Reference in New Issue
Block a user