11. marts 2002 - 17:31
#6
Den kan jeg ikke give, det er morten_'s kode. Hvis det er et problem, hvordan vil du så have dine point Morten ?. Jeg kan sende dem i en kuvert ;). Står der et eller andet sted herinde, at det ikke er tilladt at gøre der er sket i forbindelse med dette spørgsmål. Jeg beklager selvfølgelig, at jeg kom til at reposte mit spørgsmål, og at det er det der har resulteret i at jeg har fået svar, men hvis man ser bort fra det kan jeg da finde de første 1000 svar herinde som desværre for os indeholder "hemmelig" korrespondance mellem folk, men det har løst mit problem, og jeg er glad. Er du sur over at jeg er glad ?
11. marts 2002 - 17:40
#11
koden er her
unit ALabel;
interface
uses
SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics,
Controls, Forms, Dialogs, StdCtrls, Menus, uFalcoVars;
type
TLabId = Integer;
TAngle = Integer;
TLabText = String[40];
TLabColor = Integer;
TAngleLabel = class(TCustomLabel)
private
{ Private declarations }
FAngle : TAngle;
FLabColor : TLabColor;
protected
{ Protected declarations }
procedure Paint; override;
procedure SetAngle(Value: TAngle); virtual;
procedure SetLabColor(Value: TLabColor); virtual;
procedure CMFontChanged(var Message: TMessage); message CM_FONTCHANGED;
procedure MouseMove(var m:twmmouse); message wm_MouseMove;
procedure MouseLDown(var m:twmmouse); message wm_LButtonDown;
procedure MouseLUp(var m:twmmouse); message wm_LButtonUp;
procedure MouseLDBlClk(var m:twmmouse); message wm_LButtonDBlClk;
public
{ Public declarations }
LabID : TLabID;
IntId : Integer;
LabText : TLabText;
constructor Create(AOwner: TComponent); override;
published
property Align;
property AutoSize;
property Caption;
property Color;
property DragCursor;
property DragMode;
property Enabled;
property FocusControl;
property Font;
property ParentColor;
property ParentFont;
property ParentShowHint;
property PopupMenu;
property ShowHint;
property Transparent;
property Visible;
property OnClick;
property OnDblClick;
property OnDragDrop;
property OnDragOver;
property OnEndDrag;
property OnMouseDown;
property OnMouseMove;
property OnMouseUp;
{new properties}
property Angle : TAngle read fAngle write SetAngle;
property LabColor : TLabColor read fLabColor write SetLabColor;
end;
procedure Register;
implementation
uses
tpLabel;
const
Colors : array[1..14] of tcolor = (clAqua, clBlack, clFuchsia, clGray, clGreen,
clLime, clMaroon, clNavy, clOlive, clPurple,
clRed, clSilver, clTeal, clYellow);
var
EditBoxOpen : Boolean = False;
Drag: Boolean;
OldXPos, OldYPos: Integer;
procedure TAngleLabel.CMFontChanged(var Message: TMessage);
VAR TTM : TTextMetric;
begin
Inherited;
IF csLoading IN ComponentState THEN Exit;
Canvas.Font := Font;
{ GetTextMetrics(Canvas.Handle, TTM);
IF TTM.tmPitchAndFamily AND TMPF_TRUETYPE = 0 THEN
BEGIN
Font.Name := 'Arial';
MessageBeep(MB_ICONSTOP);
ShowMessage('Only TrueType fonts permittted');
END;}
end;
procedure TAngleLabel.MouseMove(var m:twmmouse);
var
OldTop, OldLeft : Integer;
begin
inherited;
if drag and not EditBoxOpen then
begin
{ if GVars.GOn then
begin
m.YPos := GVars.GSize * ((m.YPos) div GVars.GSize );
m.XPos := GVars.GSize * ((m.XPos) div GVars.GSize );
end; }
top:=top - oldypos+m.ypos;
if top < 0 then top := 0;
left := left - oldxpos+m.xpos;
if left < 0 then left := 0;
end;
OldTop := Top;
OldLeft := Left;
end;
procedure TAngleLabel.MouseLdown(var m:TWMMouse);
begin
if EditMode then
if not EditBoxOpen then
begin
inherited;
BringToFront;
drag:=true;
oldxpos := m.xpos;
oldypos := m.ypos;
end;
end;
procedure TAngleLabel.MouseLUp(var m:twmmouse);
begin
if not EditBoxOpen then
begin
inherited;
drag:=false
end;
end;
procedure TAngleLabel.MouseLDBlClk(var m:twmmouse);
var
OldName, FontStyleString : String;
OldSize, OldAngle, OldColor : Integer;
begin
if EditMode then
if not EditBoxOpen then
begin
inherited;
EditBoxOpen := True;
tpDlgLabel.OKBtn.Left := 251;
tpDlgLabel.CancelBtn.Left := 331;
tpDlgLabel.DeleteBtn.Left := 411;
tpDlgLabel.DeleteBtn.Visible := True;
tpDlgLabel.LEditText.Text := Caption;
tpDlgLabel.ComboBoxFont.ItemIndex := tpDlgLabel.ComboBoxFont.Items.IndexOf(Font.Name);
tpDlgLabel.FontColorBox.Selected := Font.Color;
tpDlgLabel.SpinEditSize.Value := Font.Size;
tpDlgLabel.SpinEditAngle.Value := Angle;
tpDlgLabel.SpinEditPosX.Value := Left;
tpDlgLabel.SpinEditPosY.Value := Top;
tpDlgLabel.cboxBold.Checked := fsBold in Font.Style;
tpDlgLabel.cboxItalic.Checked := fsItalic in Font.Style;
tpDlgLabel.cboxUnderline.Checked := fsUnderline in Font.Style;
if tpDlgLabel.ShowModal = mrOk then
begin
Caption := tpDlgLabel.LEditText.Text;
Font.Name := tpDlgLabel.ComboBoxFont.Text;
Font.Color := tpDlgLabel.FontColorBox.Selected;
Font.Size := tpDlgLabel.SpinEditSize.Value;
Angle := tpDlgLabel.SpinEditAngle.Value;
Left := tpDlgLabel.SpinEditPosX.Value;
Top := tpDlgLabel.SpinEditPosY.Value;
if tpDlgLabel.cboxBold.Checked then
Font.Style := [fsBold]
else
Font.Style := [];
if tpDlgLabel.cboxItalic.Checked then
Font.Style := Font.Style + [fsItalic];
if tpDlgLabel.cboxUnderline.Checked then
Font.Style := Font.Style + [fsUnderline];
end
else if tpDlgLabel.ModalResult = mrAbort then
begin
IntId := -1;
Visible := false;
end;
EditBoxOpen := False;
end;
end;
procedure TAngleLabel.SetAngle(Value: TAngle);
begin
IF Value <> fAngle THEN
BEGIN
fAngle := Value;
Invalidate;
END;
end;
procedure TAngleLabel.SetLabColor(Value: TLabColor);
begin
If Value <> FLabColor then
begin
FLabColor := Value;
Font.Color := Colors[FLabColor];
end;
end;
constructor TAngleLabel.Create(AOwner: TComponent);
begin
Inherited Create(AOwner);
ControlStyle := ControlStyle + [csOpaque];
AutoSize := True;
Transparent := True;
Font.Name := 'Arial';
if LabText = '' then
Caption := 'Label'
else
Caption := LabText;
Font.Size := 10;
// Left := 20;
// Top := 30;
LabColor := 1;
end;
procedure TAngleLabel.Paint;
VAR
TLF : TLogFont;
R : TRect;
X,Y : Integer;
TH, TW, {text width and height}
AW, AH : Integer; {width & height of rect enclosing angled label}
BEGIN
R := ClientRect;
GetObject(Font.Handle, SizeOf(TLF), @TLF);
TLF.lfEscapement := (((Angle MOD 360) + 360) MOD 360) * 10;
WITH Canvas DO
BEGIN
Font.Handle := CreateFontIndirect(TLF);
WITH Brush DO
IF NOT Transparent THEN
BEGIN
Style := bsSolid;
Color := Self.Color;
END
ELSE Style := bsClear;
TW := TextWidth(Caption);
TH := TextHeight(Caption);
Width := TW + 2;
Height := TW + 2;
END;
AW := Round((TW * Cos(Angle*pi/180)) +
(TH * Sin(Angle*pi/180)));
AH := Round((TW * Cos((Angle+90)*pi/180)) +
(TH * Sin((Angle+90)*pi/180)));
X := (R.Right-AW) DIV 2;
Y := (R.Bottom-AH) DIV 2;
if not Enabled then Canvas.Font.Color := clGrayText;
Canvas.TextOut(X, Y, Caption);
END;
procedure Register;
begin
{ RegisterComponents('NJR', [TAngleLabel]);
RegisterPropertyEditor(TypeInfo(TAngle), TAngleLabel,
'Angle', TAngleProperty);}
end;
end.
11. marts 2002 - 17:41
#12
Jeg vil ikke give koden, det er ikke en jeg har lavet. Hvad lyder sigtelsen på ?. Foodear, FYI så var de to af dem du nævner lukket, det tredie var ikke lukket, tak for fordi du gjorde mig opmærksom herpå. Det fjerde er det her som jeg hermed lukker.