📄 iphonepad.pas
字号:
procedure TiPhonePad.FontChange(Sender: TObject);
var
i : Integer;
iButton : TiButton;
begin
for i := 0 to FButtonList.Count-1 do
begin
iButton := FButtonList.Objects[i] as TiButton;
iButton.Font.Assign(FFont);
end;
end;
//****************************************************************************************************************************************************
procedure TiPhonePad.SetButtonVisible0(const Value:Boolean);begin FButton0.Visible:=Value;end;
procedure TiPhonePad.SetButtonVisible1(const Value:Boolean);begin FButton1.Visible:=Value;end;
procedure TiPhonePad.SetButtonVisible2(const Value:Boolean);begin FButton2.Visible:=Value;end;
procedure TiPhonePad.SetButtonVisible3(const Value:Boolean);begin FButton3.Visible:=Value;end;
procedure TiPhonePad.SetButtonVisible4(const Value:Boolean);begin FButton4.Visible:=Value;end;
procedure TiPhonePad.SetButtonVisible5(const Value:Boolean);begin FButton5.Visible:=Value;end;
procedure TiPhonePad.SetButtonVisible6(const Value:Boolean);begin FButton6.Visible:=Value;end;
procedure TiPhonePad.SetButtonVisible7(const Value:Boolean);begin FButton7.Visible:=Value;end;
procedure TiPhonePad.SetButtonVisible8(const Value:Boolean);begin FButton8.Visible:=Value;end;
procedure TiPhonePad.SetButtonVisible9(const Value:Boolean);begin FButton9.Visible:=Value;end;
procedure TiPhonePad.SetButtonVisibleA(const Value:Boolean);begin FButtonA.Visible:=Value;end;
procedure TiPhonePad.SetButtonVisibleP(const Value:Boolean);begin FButtonP.Visible:=Value;end;
//****************************************************************************************************************************************************
function TiPhonePad.GetButtonVisible0: Boolean;begin Result := FButton0.Visible;end;
function TiPhonePad.GetButtonVisible1: Boolean;begin Result := FButton1.Visible;end;
function TiPhonePad.GetButtonVisible2: Boolean;begin Result := FButton2.Visible;end;
function TiPhonePad.GetButtonVisible3: Boolean;begin Result := FButton3.Visible;end;
function TiPhonePad.GetButtonVisible4: Boolean;begin Result := FButton4.Visible;end;
function TiPhonePad.GetButtonVisible5: Boolean;begin Result := FButton5.Visible;end;
function TiPhonePad.GetButtonVisible6: Boolean;begin Result := FButton6.Visible;end;
function TiPhonePad.GetButtonVisible7: Boolean;begin Result := FButton7.Visible;end;
function TiPhonePad.GetButtonVisible8: Boolean;begin Result := FButton8.Visible;end;
function TiPhonePad.GetButtonVisible9: Boolean;begin Result := FButton9.Visible;end;
function TiPhonePad.GetButtonVisibleA: Boolean;begin Result := FButtonA.Visible;end;
function TiPhonePad.GetButtonVisibleP: Boolean;begin Result := FButtonP.Visible;end;
//****************************************************************************************************************************************************
function TiPhonePad.GetButtonCaption0: String;begin Result := FButton0.Caption;end;
function TiPhonePad.GetButtonCaption1: String;begin Result := FButton1.Caption;end;
function TiPhonePad.GetButtonCaption2: String;begin Result := FButton2.Caption;end;
function TiPhonePad.GetButtonCaption3: String;begin Result := FButton3.Caption;end;
function TiPhonePad.GetButtonCaption4: String;begin Result := FButton4.Caption;end;
function TiPhonePad.GetButtonCaption5: String;begin Result := FButton5.Caption;end;
function TiPhonePad.GetButtonCaption6: String;begin Result := FButton6.Caption;end;
function TiPhonePad.GetButtonCaption7: String;begin Result := FButton7.Caption;end;
function TiPhonePad.GetButtonCaption8: String;begin Result := FButton8.Caption;end;
function TiPhonePad.GetButtonCaption9: String;begin Result := FButton9.Caption;end;
function TiPhonePad.GetButtonCaptionA: String;begin Result := FButtonA.Caption;end;
function TiPhonePad.GetButtonCaptionP: String;begin Result := FButtonP.Caption;end;
//****************************************************************************************************************************************************
procedure TiPhonePad.SetButtonCaption0(const Value: String);begin FButton0.Caption := Value;end;
procedure TiPhonePad.SetButtonCaption1(const Value: String);begin FButton1.Caption := Value;end;
procedure TiPhonePad.SetButtonCaption2(const Value: String);begin FButton2.Caption := Value;end;
procedure TiPhonePad.SetButtonCaption3(const Value: String);begin FButton3.Caption := Value;end;
procedure TiPhonePad.SetButtonCaption4(const Value: String);begin FButton4.Caption := Value;end;
procedure TiPhonePad.SetButtonCaption5(const Value: String);begin FButton5.Caption := Value;end;
procedure TiPhonePad.SetButtonCaption6(const Value: String);begin FButton6.Caption := Value;end;
procedure TiPhonePad.SetButtonCaption7(const Value: String);begin FButton7.Caption := Value;end;
procedure TiPhonePad.SetButtonCaption8(const Value: String);begin FButton8.Caption := Value;end;
procedure TiPhonePad.SetButtonCaption9(const Value: String);begin FButton9.Caption := Value;end;
procedure TiPhonePad.SetButtonCaptionA(const Value: String);begin FButtonA.Caption := Value;end;
procedure TiPhonePad.SetButtonCaptionP(const Value: String);begin FButtonP.Caption := Value;end;
//****************************************************************************************************************************************************
procedure TiPhonePad.ButtonInvalidate(Sender: TObject);
begin
InvalidateChange;
end;
//****************************************************************************************************************************************************
procedure TiPhonePad.ButtonClick(Sender: TObject);
var
KeyCode : Integer;
AChar : Char;
begin
KeyCode := 0;
AChar := '0';
if Sender = FButton0 then begin KeyCode := 0; AChar := '0'; end
else if Sender = FButton1 then begin KeyCode := 1; AChar := '1'; end
else if Sender = FButton2 then begin KeyCode := 2; AChar := '2'; end
else if Sender = FButton3 then begin KeyCode := 3; AChar := '3'; end
else if Sender = FButton4 then begin KeyCode := 4; AChar := '4'; end
else if Sender = FButton5 then begin KeyCode := 5; AChar := '5'; end
else if Sender = FButton6 then begin KeyCode := 6; AChar := '6'; end
else if Sender = FButton7 then begin KeyCode := 7; AChar := '7'; end
else if Sender = FButton8 then begin KeyCode := 8; AChar := '8'; end
else if Sender = FButton9 then begin KeyCode := 9; AChar := '9'; end
else if Sender = FButtonA then begin KeyCode := 10; AChar := '*'; end
else if Sender = FButtonP then begin KeyCode := 11; AChar := '#'; end;
if Assigned(FOnKeyClick) then FOnKeyClick(Self, KeyCode, AChar);
end;
//****************************************************************************************************************************************************
procedure TiPhonePad.iMouseDown(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
i : Integer;
iButton : TiButton;
ScreenPoint : TPoint;
begin
if (csDesigning in ComponentState) then exit;
if Button <> mbLeft then exit;
SetFocus;
ScreenPoint := ClientToScreen(Point(X, Y));
for i := 0 to FButtonList.Count-1 do
begin
iButton := FButtonList.Objects[i] as TiButton;
if not iButton.Visible then Continue;
if PtInRect(iButton.DrawRect, Point(X, Y)) then
begin
FMouseDownObject := iButton;
FMouseDownObject.iMouseDown(Button, Shift, X, Y, ScreenPoint.X, ScreenPoint.Y);
end;
end;
end;
//****************************************************************************************************************************************************
procedure TiPhonePad.iMouseMove(Shift: TShiftState; X, Y: Integer);
begin
end;
//****************************************************************************************************************************************************
procedure TiPhonePad.iMouseUp(Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
ScreenPoint : TPoint;
begin
if (csDesigning in ComponentState) then exit;
ScreenPoint := ClientToScreen(Point(X, Y));
if Assigned(FMouseDownObject) then
begin
FMouseDownObject.iMouseUp(Button, Shift, X, Y, ScreenPoint.X, ScreenPoint.Y);
FMouseDownObject := nil;
end;
end;
//****************************************************************************************************************************************************
procedure TiPhonePad.iDoKillFocus;
var
i : Integer;
begin
if (csDesigning in ComponentState) then exit;
for i := 0 to FButtonList.Count-1 do
(FButtonList.Objects[i] as TiButton).MouseDown := False;
inherited;
end;
//****************************************************************************************************************************************************
procedure TiPhonePad.CalcRects;
var
PixelsPerPercent : Double;
ALeft : Integer;
ATop : Integer;
begin
PixelsPerPercent := Width / (3 + 2*FOuterMargin + 2*FButtonSpacing);
FSpacingHorz := Round(PixelsPerPercent * FButtonSpacing);
FButtonWidth := Round(PixelsPerPercent * 1.00 );
FMarginHorz := (Width - 3*FButtonWidth - 2*FSpacingHorz) div 2;
PixelsPerPercent := Height / (4 + 2*FOuterMargin + 3*FButtonSpacing);
FSpacingVert := Round(PixelsPerPercent * FButtonSpacing);
FButtonHeight := Round(PixelsPerPercent * 1.00 );
FMarginVert := (Height - 4*FButtonHeight - 3*FSpacingVert) div 2;
ALeft := FMarginHorz;
ATop := FMarginVert;
FButton1.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);ALeft := ALeft+FButtonWidth+FSpacingHorz;
FButton2.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);ALeft := ALeft+FButtonWidth+FSpacingHorz;
FButton3.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);
ALeft := FMarginHorz;
ATop := ATop + FButtonHeight + FSpacingVert;
FButton4.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);ALeft := ALeft+FButtonWidth+FSpacingHorz;
FButton5.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);ALeft := ALeft+FButtonWidth+FSpacingHorz;
FButton6.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);
ALeft := FMarginHorz;
ATop := ATop + FButtonHeight + FSpacingVert;
FButton7.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);ALeft := ALeft+FButtonWidth+FSpacingHorz;
FButton8.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);ALeft := ALeft+FButtonWidth+FSpacingHorz;
FButton9.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);
ALeft := FMarginHorz;
ATop := ATop + FButtonHeight + FSpacingVert;
FButtonA.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);ALeft := ALeft+FButtonWidth+FSpacingHorz;
FButton0.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);ALeft := ALeft+FButtonWidth+FSpacingHorz;
FButtonP.DrawRect := Rect(ALeft, ATop, ALeft+FButtonWidth, ATop+FButtonHeight);
end;
//****************************************************************************************************************************************************
procedure TiPhonePad.iPaintTo(Canvas: TCanvas);
var
i : Integer;
ARect : TRect;
Button : TiButton;
begin
with Canvas do
begin
CalcRects;
DrawBackGround(Canvas, BackGroundColor);
Font.Assign(FFont);
Brush.Style := bsClear;
for i := 0 to FButtonList.Count-1 do
begin
Button := (FButtonList.Objects[i] as TiButton);
if not Button.Visible then Continue;
Brush.Style := bsSolid;
Brush.Color := BackGroundColor;
with Button.DrawRect do
Rectangle(Left, Top, Right, Bottom);
Button.Draw(Canvas);
end;
if HasFocus and FShowFocusRect then
begin
ARect := Rect(0, 0 ,Width, Height);
if BorderStyle <> ibsNone then InflateRect(ARect, -3, -3);
Brush.Style := bsSolid;
iDrawFocusRect(Canvas, ARect, BackGroundColor);
end;
end;
end;
//****************************************************************************************************************************************************
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -