home *** CD-ROM | disk | FTP | other *** search
- {SclpText - Extensions to ObjectWindows Copyright (C) Doug Overmyer 7/1/91}
- unit SclpText;
- {*********************** Interface **************************}
- interface
- uses WinTypes, WinProcs, WinDos, Strings, WObjects,StdDlgs;
- const
- sr_Recessed = 1;
- sr_Raised = 0;
- type
- PSRect = ^TSRect;
- TSRect = object(TWindow)
- W,H:Integer;
- State:Integer;
- constructor Init(AParent:PWindowsObject;AnID:Integer; ATitle:PChar;
- NewX,NewY,NewW,NewH:Integer; NewState:Integer);
- destructor Done;virtual;
- procedure Paint(PaintDC:HDC; var PaintInfo:TPaintStruct);virtual;
- end;
-
- type
- PSText = ^TSText;
- TSText = object(TSRect)
- Text:Array [0..80] of Char;
- DTStyle:Integer;
- DTFont:hfont;
- constructor Init(AParent:PWindowsObject;AnID:Integer; ATitle:PChar;
- NewX,NewY,NewW,NewH:Integer; NewState,NewStyle:Integer);
- destructor Done;virtual;
- procedure Paint(PaintDC:HDC; var PaintInfo:TPaintStruct);virtual;
- procedure SetText(NewText:PChar);virtual;
- procedure SetFont(NewFont:HFont);virtual;
- end;
-
- {*********************** Implementation *******************}
- implementation
-
- {*********************** TSRect *********************}
- constructor TSRect.Init(AParent:PWindowsObject; AnID:Integer;
- ATitle:PChar; NewX,NewY,NewW,NewH:Integer; NewState:Integer);
- begin
- TWindow.Init(AParent,ATitle);
- Attr.Style := ws_Child or ws_visible ;
- Attr.X := NewX;
- Attr.Y := NewY;
- Attr.W := NewW;
- Attr.H := NewH;
- Attr.ID := AnID;
- W := NewW;
- H := NewH;
- if NewState = sr_Recessed then
- State := sr_Recessed
- else
- State := sr_Raised;
-
- end;
-
- destructor TSRect.Done;
- begin
- TWindow.Done;
- end;
-
- procedure TSRect.Paint(PaintDC:HDC;var PaintInfo:TPaintStruct);
- var
- LPts:Array[0..2] of TPoint;
- RPts:Array[0..2] of TPoint;
- ThePen:HPen;
- Pen1:HPen;
- Pen2:HPen;
- TheBrush :HBrush;
- OldBrush :HBrush;
- OldPen:HPen;
- OldBkMode:Integer;
- DRect:TRect;
- Ofs:Integer;
- begin
- TheBrush := GetStockObject(ltGray_Brush); {Draw window background}
- OldBrush := SelectObject(PaintDC,TheBrush);
- Rectangle(PaintDC,0,0,W,H);
- SelectObject(PaintDC,OldBrush);
-
- Ofs := 0;
- LPts[0].x := Ofs; LPts[0].y := H-Ofs;
- LPts[1].x := Ofs; LPts[1].y := Ofs;
- LPts[2].x := W-Ofs; LPts[2].y := Ofs;
- RPts[0].x := Ofs; RPts[0].y := H-Ofs;
- RPts[1].x := W-Ofs; RPts[1].y := H-Ofs;
- RPts[2].x := W-Ofs; RPts[2].y := Ofs;
-
- Pen1 := CreatePen(ps_Solid,1,$00000000); {Draw a surrounding blk frame}
- OldPen := SelectObject(PaintDC,Pen1);
- PolyLine(PaintDC,LPts,3);
- PolyLine(PaintDC,RPts,3);
- SelectObject(PaintDC,OldPen);
- DeleteObject(Pen1);
-
- Ofs := 1;
- LPts[0].x := Ofs; LPts[0].y := H-Ofs;
- LPts[1].x := Ofs; LPts[1].y := Ofs;
- LPts[2].x := W-Ofs; LPts[2].y := Ofs;
- RPts[0].x := Ofs; RPts[0].y := H-Ofs;
- RPts[1].x := W-Ofs; RPts[1].y := H-Ofs;
- RPts[2].x := W-Ofs; RPts[2].y := Ofs;
- if State = sr_Raised then
- begin
- Pen1 := CreatePen(ps_Solid,1,$00FFFFFF);
- Pen2 := CreatePen(ps_Solid,1,$00808080);
- end
- else
- begin
- Pen1 := CreatePen(ps_Solid,1,$00808080);
- Pen2 := CreatePen(ps_Solid,1,$00FFFFFF);
- end;
-
- OldPen := SelectObject(PaintDC,Pen1); {Draw the highlights}
- PolyLine(PaintDC,LPts,3);
- SelectObject(PaintDC,Pen2);
- DeleteObject(Pen1);
-
- PolyLine(PaintDC,RPts,3);
- SelectObject(PaintDC,OldPen);
- DeleteObject(Pen2);
- end;
- {************************ TSText ********************************}
- constructor TSText.Init(AParent:PWindowsObject; AnID:Integer;
- ATitle:PChar; NewX,NewY,NewW,NewH:Integer; NewState,NewStyle:Integer);
- begin
- TSRect.Init(AParent,AnID,ATitle,NewX,NewY,NewW,NewH,NewState);
- DTStyle := NewStyle;
- StrCopy(Text,ATitle);
- DTFont := 0;
- end;
-
- destructor TSText.Done;
- begin
- TSRect.Done;
- end;
-
- procedure TSText.Paint(PaintDC:HDC;var PaintInfo:TPaintStruct);
- var
- OldBkMode:Integer;
- DRect:TRect;
- OldFont:hFont;
- begin
- TSRect.Paint(PaintDC,PaintInfo);
- OldFont := 0;
- if DTFont <> 0 then
- OldFont := SelectObject(PaintDC,DTFont);
- OldBkMode := SetBkMode(PaintDC,Transparent); {Draw the text}
- DRect.left := 3;DRect.Top := 2;DRect.right := W-3;DRect.Bottom := H-2;
- DrawText(PaintDC,Text,StrLen(Text),DRect,DTStyle);
- SetBkMode(PaintDC,OldBkMode);
- If OldFont > 0 then
- SelectObject(PaintDC,OldFont);
- end;
-
- procedure TSText.SetText(NewText:PChar);
- var
- DRect:TRect;
- begin
- StrCopy(Text,NewText);
- DRect.left := 3;DRect.Top := 2;DRect.right := W-3;DRect.Bottom := H-2;
- InvalidateRect(HWindow,@DRect,false);
- end;
-
- procedure TSText.SetFont(NewFont:HFont);
- begin
- DTFont := NewFont;
- end;
- end.
-