亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? rxspin.pas

?? RX Library contains a large number of components, objects and routines for Borland Delphi with full
?? PAS
?? 第 1 頁 / 共 3 頁
字號:
end;
{$ENDIF WIN32}

function TRxSpinEdit.GetButtonWidth: Integer;
begin
{$IFDEF WIN32}
  if FUpDown <> nil then Result := FUpDown.Width else
{$ENDIF}
  if FButton <> nil then Result := FButton.Width
  else Result := DefBtnWidth;
end;

procedure TRxSpinEdit.ResizeButton;
{$IFDEF WIN32}
var
  R: TRect;
{$ENDIF}
begin
{$IFDEF WIN32}
  if FUpDown <> nil then begin
    FUpDown.Width := DefBtnWidth;
 {$IFDEF RX_D4}
    if (BiDiMode = bdRightToLeft) then FUpDown.Align := alLeft else
 {$ENDIF}
    FUpDown.Align := alRight;
  end
  else if FButton <> nil then begin { bkDiagonal }
    if NewStyleControls and Ctl3D and (BorderStyle = bsSingle) then
      R := Bounds(Width - Height - 1, -1, Height - 3, Height - 3)
    else
      R := Bounds(Width - Height, 0, Height, Height);
 {$IFDEF RX_D4}
    if (BiDiMode = bdRightToLeft) then begin
      if NewStyleControls and Ctl3D and (BorderStyle = bsSingle) then begin
        R.Left := -1;
        R.Right := Height - 4;
      end
      else begin
        R.Left := 0;
        R.Right := Height;
      end;
    end;
 {$ENDIF}
    with R do
      FBtnWindow.SetBounds(Left, Top, Right - Left, Bottom - Top);
    FButton.SetBounds(0, 0, FBtnWindow.Width, FBtnWindow.Height);
  end;
{$ELSE}
  if FButton <> nil then begin
    FBtnWindow.SetBounds(Width - Height, 0, Height, Height);
    FButton.SetBounds(0, 0, FBtnWindow.Width, FBtnWindow.Height);
  end;
{$ENDIF}
end;

procedure TRxSpinEdit.KeyDown(var Key: Word; Shift: TShiftState);
begin
  inherited KeyDown(Key, Shift);
  if ArrowKeys and (Key in [VK_UP, VK_DOWN]) then begin
    if Key = VK_UP then UpClick(Self)
    else if Key = VK_DOWN then DownClick(Self);
    Key := 0;
  end;
end;

procedure TRxSpinEdit.Change;
begin
  if not FChanging then inherited Change;
end;

procedure TRxSpinEdit.KeyPress(var Key: Char);
begin
  if not IsValidChar(Key) then begin
    Key := #0;
    MessageBeep(0)
  end;
  if Key <> #0 then begin
    inherited KeyPress(Key);
    if (Key = Char(VK_RETURN)) or (Key = Char(VK_ESCAPE)) then begin
      { must catch and remove this, since is actually multi-line }
      GetParentForm(Self).Perform(CM_DIALOGKEY, Byte(Key), 0);
      if Key = Char(VK_RETURN) then Key := #0;
    end;
  end;
end;

function TRxSpinEdit.IsValidChar(Key: Char): Boolean;
var
  ValidChars: set of Char;
begin
  ValidChars := ['+', '-', '0'..'9'];
  if ValueType = vtFloat then begin
    if Pos(DecimalSeparator, Text) = 0 then
      ValidChars := ValidChars + [DecimalSeparator];
    if Pos('E', AnsiUpperCase(Text)) = 0 then
      ValidChars := ValidChars + ['e', 'E'];
  end
  else if ValueType = vtHex then begin
    ValidChars := ValidChars + ['A'..'F', 'a'..'f'];
  end;
  Result := (Key in ValidChars) or (Key < #32);
  if not FEditorEnabled and Result and ((Key >= #32) or
    (Key = Char(VK_BACK)) or (Key = Char(VK_DELETE))) then Result := False;
end;

procedure TRxSpinEdit.CreateParams(var Params: TCreateParams);
const
{$IFDEF RX_D4}
  Alignments: array[Boolean, TAlignment] of DWORD =
    ((ES_LEFT, ES_RIGHT, ES_CENTER), (ES_RIGHT, ES_LEFT, ES_CENTER));
{$ELSE}
  Alignments: array[TAlignment] of Longint = (ES_LEFT, ES_RIGHT, ES_CENTER);
{$ENDIF}
begin
  inherited CreateParams(Params);
  Params.Style := Params.Style or ES_MULTILINE or WS_CLIPCHILDREN or
{$IFDEF RX_D4}
    Alignments[UseRightToLeftAlignment, FAlignment];
{$ELSE}
    Alignments[FAlignment];
{$ENDIF}
end;

procedure TRxSpinEdit.CreateWnd;
begin
  inherited CreateWnd;
  SetEditRect;
end;

procedure TRxSpinEdit.SetEditRect;
var
  Loc: TRect;
begin
{$IFDEF RX_D4}
  if (BiDiMode = bdRightToLeft) then
    SetRect(Loc, GetButtonWidth + 1, 0, ClientWidth - 1,
      ClientHeight + 1) else
{$ENDIF RX_D4}
  SetRect(Loc, 0, 0, ClientWidth - GetButtonWidth - 2, ClientHeight + 1);
  SendMessage(Handle, EM_SETRECTNP, 0, Longint(@Loc));
end;

procedure TRxSpinEdit.SetAlignment(Value: TAlignment);
begin
  if FAlignment <> Value then begin
    FAlignment := Value;
    RecreateWnd;
  end;
end;

procedure TRxSpinEdit.WMSize(var Message: TWMSize);
var
  MinHeight: Integer;
begin
  inherited;
  MinHeight := GetMinHeight;
  { text edit bug: if size to less than minheight, then edit ctrl does
    not display the text }
  if Height < MinHeight then
    Height := MinHeight
  else begin
    ResizeButton;
    SetEditRect;
  end;
end;

procedure TRxSpinEdit.GetTextHeight(var SysHeight, Height: Integer);
var
  DC: HDC;
  SaveFont: HFont;
  SysMetrics, Metrics: TTextMetric;
begin
  DC := GetDC(0);
  GetTextMetrics(DC, SysMetrics);
  SaveFont := SelectObject(DC, Font.Handle);
  GetTextMetrics(DC, Metrics);
  SelectObject(DC, SaveFont);
  ReleaseDC(0, DC);
  SysHeight := SysMetrics.tmHeight;
  Height := Metrics.tmHeight;
end;

function TRxSpinEdit.GetMinHeight: Integer;
var
  I, H: Integer;
begin
  GetTextHeight(I, H);
  if I > H then I := H;
  Result := H + {$IFNDEF WIN32} (I div 4) + {$ENDIF}
    (GetSystemMetrics(SM_CYBORDER) * 4) + 1;
end;

procedure TRxSpinEdit.UpClick(Sender: TObject);
var
  OldText: string;
begin
  if ReadOnly then MessageBeep(0)
  else begin
    FChanging := True;
    try
      OldText := inherited Text;
      Value := Value + FIncrement;
    finally
      FChanging := False;
    end;
    if CompareText(inherited Text, OldText) <> 0 then begin
      Modified := True;
      Change;
    end;
    if Assigned(FOnTopClick) then FOnTopClick(Self);
  end;
end;

procedure TRxSpinEdit.DownClick(Sender: TObject);
var
  OldText: string;
begin
  if ReadOnly then MessageBeep(0)
  else begin
    FChanging := True;
    try
      OldText := inherited Text;
      Value := Value - FIncrement;
    finally
      FChanging := False;
    end;
    if CompareText(inherited Text, OldText) <> 0 then begin
      Modified := True;
      Change;
    end;
    if Assigned(FOnBottomClick) then FOnBottomClick(Self);
  end;
end;

{$IFDEF RX_D4}
procedure TRxSpinEdit.CMBiDiModeChanged(var Message: TMessage);
begin
  inherited;
  ResizeButton;
  SetEditRect;
end;
{$ENDIF}

procedure TRxSpinEdit.CMFontChanged(var Message: TMessage);
begin
  inherited;
  ResizeButton;
  SetEditRect;
end;

procedure TRxSpinEdit.CMCtl3DChanged(var Message: TMessage);
begin
  inherited;
  ResizeButton;
  SetEditRect;
end;

procedure TRxSpinEdit.CMEnabledChanged(var Message: TMessage);
begin
  inherited;
{$IFDEF WIN32}
  if FUpDown <> nil then begin
    FUpDown.Enabled := Enabled;
    ResizeButton;
  end;
{$ENDIF}
  if FButton <> nil then FButton.Enabled := Enabled;
end;

procedure TRxSpinEdit.WMPaste(var Message: TWMPaste);
begin
  if not FEditorEnabled or ReadOnly then Exit;
  inherited;
end;

procedure TRxSpinEdit.WMCut(var Message: TWMCut);
begin
  if not FEditorEnabled or ReadOnly then Exit;
  inherited;
end;

procedure TRxSpinEdit.CMExit(var Message: TCMExit);
begin
  inherited;
  if CheckValue(Value) <> Value then SetValue(Value);
end;

procedure TRxSpinEdit.CMEnter(var Message: TMessage);
begin
  if AutoSelect and not (csLButtonDown in ControlState) then SelectAll;
  inherited;
end;

function TRxSpinEdit.GetValue: Extended;
begin
  try
    if ValueType = vtFloat then Result := StrToFloat(Text)
    else if ValueType = vtHex then Result := StrToInt('$' + Text)
    else Result := StrToInt(Text);
  except
    if ValueType = vtFloat then Result := FMinValue
    else Result := Trunc(FMinValue);
  end;
end;

procedure TRxSpinEdit.SetValue(NewValue: Extended);
begin
  if ValueType = vtFloat then
    Text := FloatToStrF(CheckValue(NewValue), ffFixed, 15, FDecimal)
  else if ValueType = vtHex then
    Text := IntToHex(Round(CheckValue(NewValue)), 1)
  else
    Text := IntToStr(Round(CheckValue(NewValue)));
end;

function TRxSpinEdit.GetAsInteger: Longint;
begin
  Result := Trunc(GetValue);
end;

procedure TRxSpinEdit.SetAsInteger(NewValue: Longint);
begin
  SetValue(NewValue);
end;

procedure TRxSpinEdit.SetValueType(NewType: TValueType);
begin
  if FValueType <> NewType then begin
    FValueType := NewType;
    Value := GetValue;
    if FValueType in [{$IFDEF CBUILDER} vtInt {$ELSE} vtInteger {$ENDIF}, vtHex] then
    begin
      FIncrement := Round(FIncrement);
      if FIncrement = 0 then FIncrement := 1;
    end;
  end;
end;

function TRxSpinEdit.IsIncrementStored: Boolean;
begin
  Result := FIncrement <> 1.0;
end;

function TRxSpinEdit.IsMaxStored: Boolean;
begin
  Result := (MaxValue <> 0.0);
end;

function TRxSpinEdit.IsMinStored: Boolean;
begin
  Result := (MinValue <> 0.0);
end;

function TRxSpinEdit.IsValueStored: Boolean;
begin
  Result := (GetValue <> 0.0);
end;

procedure TRxSpinEdit.SetDecimal(NewValue: Byte);
begin
  if FDecimal <> NewValue then begin
    FDecimal := NewValue;
    Value := GetValue;
  end;
end;

function TRxSpinEdit.CheckValue(NewValue: Extended): Extended;
begin
  Result := NewValue;
  if (FMaxValue <> FMinValue) then begin
    if NewValue < FMinValue then
      Result := FMinValue
    else if NewValue > FMaxValue then
      Result := FMaxValue;
  end;
end;

end.

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美日韩一区二区电影| 极品尤物av久久免费看| 国产精品萝li| 日韩激情视频在线观看| 免费成人美女在线观看.| 粉嫩欧美一区二区三区高清影视| 欧美久久免费观看| 久久这里都是精品| 亚洲图片欧美色图| 日韩专区在线视频| 欧美一级二级在线观看| 日韩激情一二三区| 欧美性大战久久久| 精品一区二区三区不卡| 国产精品不卡一区| 日韩欧美自拍偷拍| 欧美中文字幕一区| 99天天综合性| 国产成人8x视频一区二区| 日韩电影网1区2区| 亚洲自拍偷拍欧美| **性色生活片久久毛片| 久久久久久久久岛国免费| 日韩一级完整毛片| 欧美日韩一区二区在线观看| 成人avav在线| 国产91精品欧美| 久国产精品韩国三级视频| 午夜欧美视频在线观看| 一区二区三区中文字幕电影 | 久久激情五月婷婷| 亚洲自拍与偷拍| 亚洲美腿欧美偷拍| 日本一区二区三区高清不卡| 2024国产精品| 精品福利一二区| 亚洲精品一线二线三线无人区| 欧美一区二区在线播放| 3d动漫精品啪啪| 这里只有精品免费| 91精品欧美福利在线观看| 欧美久久一区二区| 91精品国产丝袜白色高跟鞋| 欧美日韩aaa| 91麻豆精品久久久久蜜臀| 欧美精品一二三| 日韩一级免费一区| 日韩欧美第一区| 日韩免费一区二区| 久久综合久久鬼色中文字| 欧美精品一区在线观看| 久久久亚洲精品一区二区三区| 久久久久久97三级| 国产精品久久久久毛片软件| 国产精品九色蝌蚪自拍| 亚洲免费在线看| 亚洲国产欧美日韩另类综合| 婷婷国产在线综合| 日本不卡免费在线视频| 韩日欧美一区二区三区| 国产a级毛片一区| 色综合久久久久久久久久久| 欧美视频一区二区三区四区| 欧美高清性hdvideosex| 欧美成va人片在线观看| 久久精品男人天堂av| 日韩一区在线播放| 一区二区三区在线不卡| 日本三级韩国三级欧美三级| 激情国产一区二区| 99麻豆久久久国产精品免费| 欧美午夜寂寞影院| 欧美精品一区二区在线观看| 中文乱码免费一区二区| 亚洲一区在线观看免费观看电影高清| 日韩电影在线免费看| 国产久卡久卡久卡久卡视频精品| 96av麻豆蜜桃一区二区| 91精品久久久久久蜜臀| 国产欧美日韩视频在线观看| 夜夜操天天操亚洲| 国内久久精品视频| 91天堂素人约啪| 欧美成人一区二区三区在线观看| 国产精品国产a| 免费观看久久久4p| 99精品国产91久久久久久| 91精品国产入口| 国产精品视频免费看| 国产精品对白交换视频 | 日韩中文字幕亚洲一区二区va在线| 日韩精品一二三区| 成人亚洲一区二区一| 一本色道久久综合亚洲aⅴ蜜桃| 欧美日韩情趣电影| 精品处破学生在线二十三| 中文字幕制服丝袜一区二区三区| 亚洲线精品一区二区三区 | 亚洲图片欧美一区| 午夜伦欧美伦电影理论片| 成人在线一区二区三区| 欧美亚州韩日在线看免费版国语版| 日韩一区二区三区四区五区六区| 国产亚洲综合av| 亚洲一二三四久久| 老司机一区二区| 欧美午夜精品免费| 久久影院视频免费| 亚洲国产日韩av| 国产99久久久国产精品潘金网站| 欧美性色黄大片| 欧美国产欧美综合| 欧美aaaaaa午夜精品| 成人免费观看视频| 日韩欧美中文字幕一区| 亚洲色图第一区| 国产自产高清不卡| 日本精品一区二区三区高清| 国产欧美精品日韩区二区麻豆天美| 亚洲第一电影网| www.一区二区| 欧美va在线播放| 亚洲一区电影777| 高清国产一区二区三区| 91精品国产高清一区二区三区| 国产精品久久久久毛片软件| 韩国av一区二区| 欧美一级生活片| 一区二区三区不卡视频在线观看| 国产成人免费在线观看不卡| 精品欧美一区二区在线观看| 亚洲成人综合视频| 99riav一区二区三区| 久久一区二区三区四区| 国模大尺度一区二区三区| 欧美日韩视频一区二区| 综合久久给合久久狠狠狠97色| 国产麻豆视频精品| 日韩欧美中文一区二区| 亚洲观看高清完整版在线观看| 在线观看欧美黄色| 亚洲三级在线看| 99久久免费国产| 中文子幕无线码一区tr| 国产精品99精品久久免费| 欧美国产97人人爽人人喊| 国产一区二区在线观看免费| 欧美一区二区视频在线观看2020 | 久久超碰97中文字幕| 欧美精品视频www在线观看| 一区二区三区**美女毛片| 91丨九色丨蝌蚪丨老版| 中文字幕一区免费在线观看| 丰满亚洲少妇av| 久久综合久色欧美综合狠狠| 高清在线观看日韩| 久久精品网站免费观看| 国产一区二区三区香蕉| 国产无人区一区二区三区| 乱一区二区av| 国产拍欧美日韩视频二区| 国产精品夜夜爽| 国产欧美一区二区三区网站 | 亚洲国产视频a| 日韩一区二区麻豆国产| 麻豆国产一区二区| 日韩视频不卡中文| 国产又黄又大久久| 久久精品一区蜜桃臀影院| 国产在线乱码一区二区三区| 久久久五月婷婷| 成人免费视频caoporn| 成人免费一区二区三区视频 | 欧美三电影在线| 精品一区二区三区香蕉蜜桃| 久久久精品国产免大香伊| 成人av午夜电影| 亚洲国产视频一区| 日韩欧美国产一区二区三区| 精品一区二区三区久久| 中文字幕国产一区| 91亚洲精品一区二区乱码| 亚洲电影一级黄| 精品动漫一区二区三区在线观看| 国内成人自拍视频| 中文字幕人成不卡一区| 欧美探花视频资源| 美女精品一区二区| 国产精品欧美极品| 欧美性猛交xxxxxxxx| 国内成人自拍视频| 一区二区在线看| 日韩免费观看高清完整版| 国产乱理伦片在线观看夜一区| 亚洲欧美综合网| 久久夜色精品一区| 91丨九色porny丨蝌蚪| 青娱乐精品视频| 国产精品第五页| 欧美一区午夜精品|