From: Robert M. <mar...@us...> - 2003-11-21 18:20:51
|
Update of /cvsroot/jvcl/dev/JVCL3/run In directory sc8-pr-cvs1:/tmp/cvs-serv17609/JVCL3/run Modified Files: JvMTConsts.pas JvMTSync.pas JvMTSyncMon.pas JvMTThreading.pas JvMemo.pas JvgAlignForm.pas JvgTransparentMemo.pas Log Message: style cleaning and integrate JvgTransparentMemo.pas into JvMemo.pas Index: JvMTConsts.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvMTConsts.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** JvMTConsts.pas 24 Oct 2003 08:01:14 -0000 1.2 --- JvMTConsts.pas 21 Nov 2003 18:20:48 -0000 1.3 *************** *** 23,29 **** --- 23,32 ---- -----------------------------------------------------------------------------} + {$I JVCL.INC} + unit JvMTConsts; interface + uses SysUtils, Classes; *************** *** 33,49 **** type ! EMTThread = class(EThread); ! EMTTerminate = class(EAbort); type ! TMTThreadStatus = (tsInitializing, tsWaiting, tsRunning, tsTerminating, ! tsFinished); type TThreadNameInfo = record ! FType: LongWord; // must be 0x1000 FName: PChar; // pointer to name (in user address space) ! FThreadID: LongWord; // thread ID (-1 indicates caller thread) ! FFlags: LongWord; // reserved for future use, must be zero end; --- 36,52 ---- type ! EMTThreadError = class(EThread); ! EMTTerminateError = class(EAbort); type ! TMTThreadStatus = ! (tsInitializing, tsWaiting, tsRunning, tsTerminating, tsFinished); type TThreadNameInfo = record ! FType: Longword; // must be 0x1000 FName: PChar; // pointer to name (in user address space) ! FThreadID: Longword; // thread ID (-1 indicates caller thread) ! FFlags: Longword; // reserved for future use, must be zero end; *************** *** 52,56 **** implementation - end. --- 55,58 ---- Index: JvMTSync.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvMTSync.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** JvMTSync.pas 24 Oct 2003 09:12:13 -0000 1.3 --- JvMTSync.pas 21 Nov 2003 18:20:48 -0000 1.4 *************** *** 165,169 **** Wait for the semaphore to become signalled or the for the timeout time to pass. ! If the Thread is terminated before or during the waiting, an EMTTerminate exception will be raised. The exception will only be raised if the semaphore was not signalled --- 165,169 ---- Wait for the semaphore to become signalled or the for the timeout time to pass. ! If the Thread is terminated before or during the waiting, an EMTTerminateError exception will be raised. The exception will only be raised if the semaphore was not signalled *************** *** 187,191 **** // setup the handle array. // the semphore has priority over the terminate signal ! // because if we get the semaphore we must not raise an EMTTerminate HandleArray[0] := FHandle; HandleArray[1] := CurrentMTThread.TerminateSignal; --- 187,191 ---- // setup the handle array. // the semphore has priority over the terminate signal ! // because if we get the semaphore we must not raise an EMTTerminateError HandleArray[0] := FHandle; HandleArray[1] := CurrentMTThread.TerminateSignal; *************** *** 196,206 **** begin FLastError := GetLastError; ! raise EMTThread.Create('Semaphore failure ('+IntToStr(FLastError)+')'); end; WAIT_TIMEOUT: Result := False; WAIT_OBJECT_0: Result := True; ! WAIT_OBJECT_0+1: CurrentMTThread.CheckTerminate; // do raise EMTTerminate ! WAIT_ABANDONED: raise EMTTerminate.Create('Semphore was abandoned'); ! WAIT_ABANDONED+1: raise EMTTerminate.Create('Thread was abandoned'); end; --- 196,206 ---- begin FLastError := GetLastError; ! raise EMTThreadError.Create('Semaphore failure ('+IntToStr(FLastError)+')'); end; WAIT_TIMEOUT: Result := False; WAIT_OBJECT_0: Result := True; ! WAIT_OBJECT_0+1: CurrentMTThread.CheckTerminate; // do raise EMTTerminateError ! WAIT_ABANDONED: raise EMTTerminateError.Create('Semphore was abandoned'); ! WAIT_ABANDONED+1: raise EMTTerminateError.Create('Thread was abandoned'); end; *************** *** 211,220 **** case WaitForSingleObject(FHandle, Timeout) of WAIT_OBJECT_0: Result := True; ! WAIT_ABANDONED: raise EMTTerminate.Create('Semphore was abandoned'); WAIT_TIMEOUT: Result := False; WAIT_FAILED: begin FLastError := GetLastError; ! raise EMTThread.Create('Semaphore failure'); end; end; --- 211,220 ---- case WaitForSingleObject(FHandle, Timeout) of WAIT_OBJECT_0: Result := True; ! WAIT_ABANDONED: raise EMTTerminateError.Create('Semphore was abandoned'); WAIT_TIMEOUT: Result := False; WAIT_FAILED: begin FLastError := GetLastError; ! raise EMTThreadError.Create('Semaphore failure'); end; end; Index: JvMTSyncMon.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvMTSyncMon.pas,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** JvMTSyncMon.pas 24 Oct 2003 09:12:13 -0000 1.2 --- JvMTSyncMon.pas 21 Nov 2003 18:20:48 -0000 1.3 *************** *** 262,268 **** if OtherWaiting then try ! FMonitor.WaitNext; // Can raise EMTTerminate except ! on EMTTerminate do begin FMonitor.CriticalEnter; --- 262,268 ---- if OtherWaiting then try ! FMonitor.WaitNext; // Can raise EMTTerminateError except ! on EMTTerminateError do begin FMonitor.CriticalEnter; *************** *** 302,308 **** try ! FXSem.Wait; // Can raise EMTTerminate except ! on EMTTerminate do begin FMonitor.CriticalEnter; --- 302,308 ---- try ! FXSem.Wait; // Can raise EMTTerminateError except ! on EMTTerminateError do begin FMonitor.CriticalEnter; Index: JvMTThreading.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvMTThreading.pas,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** JvMTThreading.pas 24 Oct 2003 09:57:33 -0000 1.5 --- JvMTThreading.pas 21 Nov 2003 18:20:48 -0000 1.6 *************** *** 287,294 **** begin if CurrentMTThread <> Self then ! raise EMTThread.Create(sCheckTerminateCalledByWrongThread); if GetStatus = tsTerminating then ! raise EMTTerminate.Create(''); end; --- 287,294 ---- begin if CurrentMTThread <> Self then ! raise EMTThreadError.Create(sCheckTerminateCalledByWrongThread); if GetStatus = tsTerminating then ! raise EMTTerminateError.Create(''); end; *************** *** 347,351 **** if Assigned(FOnExecute) then FOnExecute(Self); except ! on E: EMTTerminate do {nothing}; on E: Exception do Log('OnExecute Exception: "' + E.Message+'"'); // do not localize end; --- 347,351 ---- if Assigned(FOnExecute) then FOnExecute(Self); except ! on E: EMTTerminateError do {nothing}; on E: Exception do Log('OnExecute Exception: "' + E.Message+'"'); // do not localize end; *************** *** 399,403 **** FIntThread.Resume else ! raise EMTThread.Create(sThreadNotInitializedOrWaiting); finally FStatusChange.Release; --- 399,403 ---- FIntThread.Resume else ! raise EMTThreadError.Create(sThreadNotInitializedOrWaiting); finally FStatusChange.Release; *************** *** 415,419 **** begin if CurrentMTThread <> Self then ! raise EMTThread.Create(sCannotChangeNameOfOtherActiveThread); FName := Value; --- 415,419 ---- begin if CurrentMTThread <> Self then ! raise EMTThreadError.Create(sCannotChangeNameOfOtherActiveThread); FName := Value; *************** *** 628,632 **** Thread.DecRef else ! raise EMTThread.Create(sReleaseOfUnusedTicket); // if this was the last reference then the thread must be removed --- 628,632 ---- Thread.DecRef else ! raise EMTThreadError.Create(sReleaseOfUnusedTicket); // if this was the last reference then the thread must be removed *************** *** 681,685 **** 0: Break; 1: ; ! -1: raise EMTThread.Create(sCurThreadIsPartOfManager); end; Sleep(0); --- 681,685 ---- 0: Break; 1: ; ! -1: raise EMTThreadError.Create(sCurThreadIsPartOfManager); end; Sleep(0); Index: JvMemo.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvMemo.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** JvMemo.pas 10 Oct 2003 13:01:05 -0000 1.3 --- JvMemo.pas 21 Nov 2003 18:20:48 -0000 1.4 *************** *** 73,76 **** --- 73,77 ---- FOrigLines: TStrings; FClipboardCommands: TJvClipboardCommands; + FTransparent: Boolean; procedure SetHotTrack(const Value: Boolean); procedure CaretChanged(Sender: TObject); dynamic; *************** *** 88,91 **** --- 89,94 ---- procedure WMCut(var Msg: TWMCut); message WM_CUT; procedure WMUndo(var Msg: TWMUndo); message WM_UNDO; + procedure WMPaint(var Msg: TWMPaint); message WM_PAINT; + procedure WMEraseBkgnd(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND; procedure SetMaxLines(const Value: Integer); function GetLines: TStrings; *************** *** 99,104 **** --- 102,109 ---- procedure KeyPress(var Key: Char); override; procedure Change; override; + procedure CreateParams(var Params: TCreateParams); override; function GetCurrentLine: Integer; procedure SetCurrentLine(iNewLine: Integer); + procedure SetTransparent(Value: Boolean); public constructor Create(AOwner: TComponent); override; *************** *** 119,122 **** --- 124,128 ---- property Lines: TStrings read GetLines write SetLines; property ReadOnly: Boolean read GetReadOnly write SetReadOnly; + property Transparent: Boolean read FTransparent write SetTransparent default False; property OnMouseEnter: TNotifyEvent read FOnMouseEnter write FOnMouseEnter; property OnMouseLeave: TNotifyEvent read FOnMouseLeave write FOnMouseLeave; *************** *** 171,174 **** --- 177,181 ---- property PopupMenu; property ReadOnly; + property Transparent; property ScrollBars; property ShowHint; *************** *** 216,219 **** --- 223,227 ---- FCaret.OnChanged := CaretChanged; FClipboardCommands := [caCopy..caUndo]; + FTransparent := False; end; *************** *** 307,310 **** --- 315,327 ---- end; + procedure TJvCustomMemo.CreateParams(var Params: TCreateParams); + begin + inherited CreateParams(Params); + if Transparent then + Params.ExStyle := Params.ExStyle or WS_EX_TRANSPARENT + else + Params.ExStyle := Params.ExStyle and not WS_EX_TRANSPARENT; + end; + function TJvCustomMemo.CharOfLine(iLine: Integer): Integer; begin *************** *** 366,369 **** --- 383,396 ---- end; + procedure TJvCustomMemo.SetTransparent(Value: Boolean); + begin + if Value <> FTransparent then + begin + FTransparent := Value; + RecreateWnd; + Invalidate; + end; + end; + procedure TJvCustomMemo.CaretChanged(Sender: TObject); begin *************** *** 497,500 **** --- 524,546 ---- if caUndo in ClipboardCommands then inherited; + end; + + procedure TJvCustomMemo.WMPaint(var Msg: TWMPaint); + var + DC: HDC; + begin + DC := GetDC(Handle); + if Transparent then + SetBkMode(DC, Windows.TRANSPARENT) + else + SetBkMode(DC, Windows.OPAQUE); + ReleaseDC(Handle, DC); + inherited; + end; + + procedure TJvCustomMemo.WMEraseBkgnd(var Msg: TWMEraseBkgnd); + begin + if not Transparent then + DefaultHandler(Msg); end; Index: JvgAlignForm.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvgAlignForm.pas,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** JvgAlignForm.pas 10 Oct 2003 23:13:33 -0000 1.3 --- JvgAlignForm.pas 21 Nov 2003 18:20:48 -0000 1.4 *************** *** 50,56 **** end; - var - AlignForm: TAlignForm; - implementation --- 50,53 ---- Index: JvgTransparentMemo.pas =================================================================== RCS file: /cvsroot/jvcl/dev/JVCL3/run/JvgTransparentMemo.pas,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** JvgTransparentMemo.pas 22 Jun 2003 09:42:14 -0000 1.1 --- JvgTransparentMemo.pas 21 Nov 2003 18:20:48 -0000 1.2 *************** *** 41,44 **** --- 41,45 ---- FAboutJVCL: TJVCLAboutInfo; procedure WMPaint(var Msg: TWMPaint); message WM_PAINT; + procedure WMEraseBkgnd(var Msg: TWMEraseBkgnd); message WM_ERASEBKGND; public procedure CreateParams(var Params: TCreateParams); override; *************** *** 63,66 **** --- 64,71 ---- ReleaseDC(Handle, DC); inherited; + end; + + procedure TJvgTransparentMemo.WMEraseBkgnd(var Msg: TWMEraseBkgnd); + begin end; |