⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 asc2setup.pas

📁 朗铭科技Ls-810 门禁控制器接口 delphi源程
💻 PAS
📖 第 1 页 / 共 4 页
字号:
    DateTimeEdit.Text := Copy(S,1,2)+' '+'20'+Copy(S,3,2)+'-'+Copy(S,5,2)+'-'+Copy(S,7,2);
    DateTimeEdit.Text := DateTimeEdit.Text+' '+Copy(S,9,2)+':'+Copy(S,11,2)+':'+Copy(S,13,2);
  end else
    SetLamp(1);

  SetLamp(2);
  if ascGetStatus(hComDev,1,devid,S)=0 then
  begin
    SetLamp(3);
    if Copy(S,3,1)='0' then
      PtrButton1.Checked := True
    else
      PtrButton2.Checked := True;
    if Copy(S,4,2)='00' then
      TotalButton1.Checked := True
    else if Copy(S,4,2)='01' then
      TotalButton2.Checked := True
    else
      TotalButton3.Checked := True;
  end else
    SetLamp(1);
end;

// 时间表

procedure TASC2SetupForm.TimeCodeUpDownChanging(Sender: TObject; var AllowChange: Boolean);
begin
  TimeCodeEdit.Text := IntToStr(TimeCodeUpDown.Position);
end;

procedure TASC2SetupForm.TimeCodeEditChange(Sender: TObject);
begin
  LoadTimeCodeDef();
end;

procedure TASC2SetupForm.TSEnChkBox0Click(Sender: TObject);
begin
  StoreTimeCodeDef();
end;

procedure TASC2SetupForm.ReadTimeCodeButtonClick(Sender: TObject);
var
  S,S1,S2,S3,S4,S5,S6,S7,S8: string;
  i: Smallint;
begin
  S := StringOfChar(' ',16);
  SetLamp(2);
  if ascGetTimeCodeCount(hComDev,1,devid,S)=0 then
  begin
    TimeCodesEdit.Text := S;
    SetLamp(3);
  end else
    SetLamp(1);

  for i:=0 to StrToInt(TimeCodesEdit.Text)-1 do
  begin
    S1 := StringOfChar(' ',16);
    S2 := StringOfChar(' ',16);
    S3 := StringOfChar(' ',16);
    S4 := StringOfChar(' ',16);
    S5 := StringOfChar(' ',16);
    S6 := StringOfChar(' ',16);
    S7 := StringOfChar(' ',16);
    S8 := StringOfChar(' ',16);
    SetLamp(2);
    if ascGetTimeCode(hComDev,2,devid,i,S,S1,S2,S3,S4,S5,S6,S7,S8)=0 then
    begin
      TimeCodeEnable[i] := StrToInt(S);
      TimeCode[i,0,0]:=Copy(S1,1,2)+':'+Copy(S1,3,2)+':00';
      TimeCode[i,0,1]:=Copy(S1,5,2)+':'+Copy(S1,7,2)+':00';
      TimeCode[i,0,2]:=Copy(S1,9,2)+':'+Copy(S1,11,2)+':00';
      TimeCode[i,0,3]:=Copy(S1,13,2)+':'+Copy(S1,15,2)+':00';
      TimeCode[i,1,0]:=Copy(S2,1,2)+':'+Copy(S2,3,2)+':00';
      TimeCode[i,1,1]:=Copy(S2,5,2)+':'+Copy(S2,7,2)+':00';
      TimeCode[i,1,2]:=Copy(S2,9,2)+':'+Copy(S2,11,2)+':00';
      TimeCode[i,1,3]:=Copy(S2,13,2)+':'+Copy(S2,15,2)+':00';
      TimeCode[i,2,0]:=Copy(S3,1,2)+':'+Copy(S3,3,2)+':00';
      TimeCode[i,2,1]:=Copy(S3,5,2)+':'+Copy(S3,7,2)+':00';
      TimeCode[i,2,2]:=Copy(S3,9,2)+':'+Copy(S3,11,2)+':00';
      TimeCode[i,2,3]:=Copy(S3,13,2)+':'+Copy(S3,15,2)+':00';
      TimeCode[i,3,0]:=Copy(S4,1,2)+':'+Copy(S4,3,2)+':00';
      TimeCode[i,3,1]:=Copy(S4,5,2)+':'+Copy(S4,7,2)+':00';
      TimeCode[i,3,2]:=Copy(S4,9,2)+':'+Copy(S4,11,2)+':00';
      TimeCode[i,3,3]:=Copy(S4,13,2)+':'+Copy(S4,15,2)+':00';
      TimeCode[i,4,0]:=Copy(S5,1,2)+':'+Copy(S5,3,2)+':00';
      TimeCode[i,4,1]:=Copy(S5,5,2)+':'+Copy(S5,7,2)+':00';
      TimeCode[i,4,2]:=Copy(S5,9,2)+':'+Copy(S5,11,2)+':00';
      TimeCode[i,4,3]:=Copy(S5,13,2)+':'+Copy(S5,15,2)+':00';
      TimeCode[i,5,0]:=Copy(S6,1,2)+':'+Copy(S6,3,2)+':00';
      TimeCode[i,5,1]:=Copy(S6,5,2)+':'+Copy(S6,7,2)+':00';
      TimeCode[i,5,2]:=Copy(S6,9,2)+':'+Copy(S6,11,2)+':00';
      TimeCode[i,5,3]:=Copy(S6,13,2)+':'+Copy(S6,15,2)+':00';
      TimeCode[i,6,0]:=Copy(S7,1,2)+':'+Copy(S7,3,2)+':00';
      TimeCode[i,6,1]:=Copy(S7,5,2)+':'+Copy(S7,7,2)+':00';
      TimeCode[i,6,2]:=Copy(S7,9,2)+':'+Copy(S7,11,2)+':00';
      TimeCode[i,6,3]:=Copy(S7,13,2)+':'+Copy(S7,15,2)+':00';
      TimeCode[i,7,0]:=Copy(S8,1,2)+':'+Copy(S8,3,2)+':00';
      TimeCode[i,7,1]:=Copy(S8,5,2)+':'+Copy(S8,7,2)+':00';
      TimeCode[i,7,2]:=Copy(S8,9,2)+':'+Copy(S8,11,2)+':00';
      TimeCode[i,7,3]:=Copy(S8,13,2)+':'+Copy(S8,15,2)+':00';
      LoadTimeCodeDef();
      SetLamp(3);
    end else
      SetLamp(1);
  end;
end;

procedure TASC2SetupForm.WriteTimeCodeButtonClick(Sender: TObject);
var
  S1,S2,S3,S4,S5,S6,S7,S8: string;
  tsen: Byte;
  i: Smallint;
begin
  for i:=0 to StrToInt(TimeCodesEdit.Text)-1 do
  begin
    tsen := TimeCodeEnable[i];
    S1 := Copy(TimeCode[i,0,0],1,2)+Copy(TimeCode[i,0,0],4,2);
    S1 := S1+Copy(TimeCode[i,0,1],1,2)+Copy(TimeCode[i,0,1],4,2);
    S1 := S1+Copy(TimeCode[i,0,2],1,2)+Copy(TimeCode[i,0,2],4,2);
    S1 := S1+Copy(TimeCode[i,0,3],1,2)+Copy(TimeCode[i,0,3],4,2);
    S2 := Copy(TimeCode[i,1,0],1,2)+Copy(TimeCode[i,1,0],4,2);
    S2 := S2+Copy(TimeCode[i,1,1],1,2)+Copy(TimeCode[i,1,1],4,2);
    S2 := S2+Copy(TimeCode[i,1,2],1,2)+Copy(TimeCode[i,1,2],4,2);
    S2 := S2+Copy(TimeCode[i,1,3],1,2)+Copy(TimeCode[i,1,3],4,2);
    S3 := Copy(TimeCode[i,2,0],1,2)+Copy(TimeCode[i,2,0],4,2);
    S3 := S3+Copy(TimeCode[i,2,1],1,2)+Copy(TimeCode[i,2,1],4,2);
    S3 := S3+Copy(TimeCode[i,2,2],1,2)+Copy(TimeCode[i,2,2],4,2);
    S3 := S3+Copy(TimeCode[i,2,3],1,2)+Copy(TimeCode[i,2,3],4,2);
    S4 := Copy(TimeCode[i,3,0],1,2)+Copy(TimeCode[i,3,0],4,2);
    S4 := S4+Copy(TimeCode[i,3,1],1,2)+Copy(TimeCode[i,3,1],4,2);
    S4 := S4+Copy(TimeCode[i,3,2],1,2)+Copy(TimeCode[i,3,2],4,2);
    S4 := S4+Copy(TimeCode[i,3,3],1,2)+Copy(TimeCode[i,3,3],4,2);
    S5 := Copy(TimeCode[i,4,0],1,2)+Copy(TimeCode[i,4,0],4,2);
    S5 := S5+Copy(TimeCode[i,4,1],1,2)+Copy(TimeCode[i,4,1],4,2);
    S5 := S5+Copy(TimeCode[i,4,2],1,2)+Copy(TimeCode[i,4,2],4,2);
    S5 := S5+Copy(TimeCode[i,4,3],1,2)+Copy(TimeCode[i,4,3],4,2);
    S6 := Copy(TimeCode[i,5,0],1,2)+Copy(TimeCode[i,5,0],4,2);
    S6 := S6+Copy(TimeCode[i,5,1],1,2)+Copy(TimeCode[i,5,1],4,2);
    S6 := S6+Copy(TimeCode[i,5,2],1,2)+Copy(TimeCode[i,5,2],4,2);
    S6 := S6+Copy(TimeCode[i,5,3],1,2)+Copy(TimeCode[i,5,3],4,2);
    S7 := Copy(TimeCode[i,6,0],1,2)+Copy(TimeCode[i,6,0],4,2);
    S7 := S7+Copy(TimeCode[i,6,1],1,2)+Copy(TimeCode[i,6,1],4,2);
    S7 := S7+Copy(TimeCode[i,6,2],1,2)+Copy(TimeCode[i,6,2],4,2);
    S7 := S7+Copy(TimeCode[i,6,3],1,2)+Copy(TimeCode[i,6,3],4,2);
    S8 := Copy(TimeCode[i,7,0],1,2)+Copy(TimeCode[i,7,0],4,2);
    S8 := S8+Copy(TimeCode[i,7,1],1,2)+Copy(TimeCode[i,7,1],4,2);
    S8 := S8+Copy(TimeCode[i,7,2],1,2)+Copy(TimeCode[i,7,2],4,2);
    S8 := S8+Copy(TimeCode[i,7,3],1,2)+Copy(TimeCode[i,7,3],4,2);
    SetLamp(2);
    if ascAddTimeCode(hComDev,1,devid,tsen,S1,S2,S3,S4,S5,S6,S7,S8)=0 then
      SetLamp(3)
    else
      SetLamp(1);
  end;
end;

procedure TASC2SetupForm.ClrTimeCodeButtonClick(Sender: TObject);
begin
  TimeCodesEdit.Text := '0';
  SetLamp(2);
  if ascClrTimeCodeCount(hComDev,1,devid)=0 then
    SetLamp(3)
  else
    SetLamp(1);
end;

procedure TASC2SetupForm.LoadTimeCodeDef();
var
  i: Byte;
begin
  TSEnChkBox0.OnClick := nil;
  TSEnChkBox1.OnClick := nil;
  TSEnChkBox2.OnClick := nil;
  TSEnChkBox3.OnClick := nil;
  TSEnChkBox4.OnClick := nil;
  TSEnChkBox5.OnClick := nil;
  TSEnChkBox6.OnClick := nil;
  TSEnChkBox7.OnClick := nil;
  i := StrToInt(TimeCodeEdit.Text)-1;
  TSEnChkBox0.Checked := ( ( TimeCodeEnable[i] and $80 ) = $80 );
  TSEnChkBox1.Checked := ( ( TimeCodeEnable[i] and $40 ) = $40 );
  TSEnChkBox2.Checked := ( ( TimeCodeEnable[i] and $20 ) = $20 );
  TSEnChkBox3.Checked := ( ( TimeCodeEnable[i] and $10 ) = $10 );
  TSEnChkBox4.Checked := ( ( TimeCodeEnable[i] and $08 ) = $08 );
  TSEnChkBox5.Checked := ( ( TimeCodeEnable[i] and $04 ) = $04 );
  TSEnChkBox6.Checked := ( ( TimeCodeEnable[i] and $02 ) = $02 );
  TSEnChkBox7.Checked := ( ( TimeCodeEnable[i] and $01 ) = $01 );
  TimePickerA11.Time := StrToTime(TimeCode[i,0,0]);
  TimePickerA12.Time := StrToTime(TimeCode[i,0,1]);
  TimePickerB11.Time := StrToTime(TimeCode[i,0,2]);
  TimePickerB12.Time := StrToTime(TimeCode[i,0,3]);
  TimePickerA21.Time := StrToTime(TimeCode[i,1,0]);
  TimePickerA22.Time := StrToTime(TimeCode[i,1,1]);
  TimePickerB21.Time := StrToTime(TimeCode[i,1,2]);
  TimePickerB22.Time := StrToTime(TimeCode[i,1,3]);
  TimePickerA31.Time := StrToTime(TimeCode[i,2,0]);
  TimePickerA32.Time := StrToTime(TimeCode[i,2,1]);
  TimePickerB31.Time := StrToTime(TimeCode[i,2,2]);
  TimePickerB32.Time := StrToTime(TimeCode[i,2,3]);
  TimePickerA41.Time := StrToTime(TimeCode[i,3,0]);
  TimePickerA42.Time := StrToTime(TimeCode[i,3,1]);
  TimePickerB41.Time := StrToTime(TimeCode[i,3,2]);
  TimePickerB42.Time := StrToTime(TimeCode[i,3,3]);
  TimePickerA51.Time := StrToTime(TimeCode[i,4,0]);
  TimePickerA52.Time := StrToTime(TimeCode[i,4,1]);
  TimePickerB51.Time := StrToTime(TimeCode[i,4,2]);
  TimePickerB52.Time := StrToTime(TimeCode[i,4,3]);
  TimePickerA61.Time := StrToTime(TimeCode[i,5,0]);
  TimePickerA62.Time := StrToTime(TimeCode[i,5,1]);
  TimePickerB61.Time := StrToTime(TimeCode[i,5,2]);
  TimePickerB62.Time := StrToTime(TimeCode[i,5,3]);
  TimePickerA71.Time := StrToTime(TimeCode[i,6,0]);
  TimePickerA72.Time := StrToTime(TimeCode[i,6,1]);
  TimePickerB71.Time := StrToTime(TimeCode[i,6,2]);
  TimePickerB72.Time := StrToTime(TimeCode[i,6,3]);
  TimePickerA81.Time := StrToTime(TimeCode[i,7,0]);
  TimePickerA82.Time := StrToTime(TimeCode[i,7,1]);
  TimePickerB81.Time := StrToTime(TimeCode[i,7,2]);
  TimePickerB82.Time := StrToTime(TimeCode[i,7,3]);
  TSEnChkBox0.OnClick := TSEnChkBox0Click;
  TSEnChkBox1.OnClick := TSEnChkBox0Click;
  TSEnChkBox2.OnClick := TSEnChkBox0Click;
  TSEnChkBox3.OnClick := TSEnChkBox0Click;
  TSEnChkBox4.OnClick := TSEnChkBox0Click;
  TSEnChkBox5.OnClick := TSEnChkBox0Click;
  TSEnChkBox6.OnClick := TSEnChkBox0Click;
  TSEnChkBox7.OnClick := TSEnChkBox0Click;
end;

procedure TASC2SetupForm.StoreTimeCodeDef();
var
  i: Byte;
begin
  i := StrToInt(TimeCodeEdit.Text)-1;
  if TSEnChkBox0.Checked then
    TimeCodeEnable[i] := ( TimeCodeEnable[i] or $80 )
  else
    TimeCodeEnable[i] := ( TimeCodeEnable[i] and $7f );
  if TSEnChkBox1.Checked then
    TimeCodeEnable[i] := ( TimeCodeEnable[i] or $40 )
  else
    TimeCodeEnable[i] := ( TimeCodeEnable[i] and $bf );
  if TSEnChkBox2.Checked then
    TimeCodeEnable[i] := ( TimeCodeEnable[i] or $20 )
  else
    TimeCodeEnable[i] := ( TimeCodeEnable[i] and $df );
  if TSEnChkBox3.Checked then
    TimeCodeEnable[i] := ( TimeCodeEnable[i] or $10 )
  else
    TimeCodeEnable[i] := ( TimeCodeEnable[i] and $ef );
  if TSEnChkBox4.Checked then
    TimeCodeEnable[i] := ( TimeCodeEnable[i] or $08 )
  else
    TimeCodeEnable[i] := ( TimeCodeEnable[i] and $f7 );
  if TSEnChkBox5.Checked then
    TimeCodeEnable[i] := ( TimeCodeEnable[i] or $04 )
  else
    TimeCodeEnable[i] := ( TimeCodeEnable[i] and $fb );
  if TSEnChkBox6.Checked then
    TimeCodeEnable[i] := ( TimeCodeEnable[i] or $02 )
  else
    TimeCodeEnable[i] := ( TimeCodeEnable[i] and $fd );
  if TSEnChkBox7.Checked then
    TimeCodeEnable[i] := ( TimeCodeEnable[i] or $01 )
  else
    TimeCodeEnable[i] := ( TimeCodeEnable[i] and $fe );
  TimeCode[i,0,0] := TimeToStr(TimePickerA11.Time);
  TimeCode[i,0,1] := TimeToStr(TimePickerA12.Time);
  TimeCode[i,0,2] := TimeToStr(TimePickerB11.Time);
  TimeCode[i,0,3] := TimeToStr(TimePickerB12.Time);
  TimeCode[i,1,0] := TimeToStr(TimePickerA21.Time);
  TimeCode[i,1,1] := TimeToStr(TimePickerA22.Time);
  TimeCode[i,1,2] := TimeToStr(TimePickerB21.Time);
  TimeCode[i,1,3] := TimeToStr(TimePickerB22.Time);
  TimeCode[i,2,0] := TimeToStr(TimePickerA31.Time);
  TimeCode[i,2,1] := TimeToStr(TimePickerA32.Time);
  TimeCode[i,2,2] := TimeToStr(TimePickerB31.Time);
  TimeCode[i,2,3] := TimeToStr(TimePickerB32.Time);
  TimeCode[i,3,0] := TimeToStr(TimePickerA41.Time);
  TimeCode[i,3,1] := TimeToStr(TimePickerA42.Time);
  TimeCode[i,3,2] := TimeToStr(TimePickerB41.Time);
  TimeCode[i,3,3] := TimeToStr(TimePickerB42.Time);
  TimeCode[i,4,0] := TimeToStr(TimePickerA51.Time);
  TimeCode[i,4,1] := TimeToStr(TimePickerA52.Time);
  TimeCode[i,4,2] := TimeToStr(TimePickerB51.Time);
  TimeCode[i,4,3] := TimeToStr(TimePickerB52.Time);
  TimeCode[i,5,0] := TimeToStr(TimePickerA61.Time);
  TimeCode[i,5,1] := TimeToStr(TimePickerA62.Time);
  TimeCode[i,5,2] := TimeToStr(TimePickerB61.Time);
  TimeCode[i,5,3] := TimeToStr(TimePickerB62.Time);
  TimeCode[i,6,0] := TimeToStr(TimePickerA71.Time);
  TimeCode[i,6,1] := TimeToStr(TimePickerA72.Time);
  TimeCode[i,6,2] := TimeToStr(TimePickerB71.Time);
  TimeCode[i,6,3] := TimeToStr(TimePickerB72.Time);
  TimeCode[i,7,0] := TimeToStr(TimePickerA81.Time);
  TimeCode[i,7,1] := TimeToStr(TimePickerA82.Time);
  TimeCode[i,7,2] := TimeToStr(TimePickerB81.Time);
  TimeCode[i,7,3] := TimeToStr(TimePickerB82.Time);
end;

// 假日/报警设置

procedure TASC2SetupForm.ReadHoliAlmButtonClick(Sender: TObject);
var
  S,alarm1,alarm2,alarm3,alarm4: string;
  i : Smallint;
begin
  alarm1 := STringOfChar(' ',8);
  alarm2 := STringOfChar(' ',8);
  alarm3 := STringOfChar(' ',8);
  alarm4 := STringOfChar(' ',8);
  SetLamp(2);
  if ascGetAlarmCode(hComDev,1,devid,alarm1,alarm2,alarm3,alarm4)=0 then
  begin
    AlarmBellEdit1.Text := IntToStr(StrToInt(alarm1) shr 4);
    AlarmStopEdit1.Text := IntToStr(StrToInt(alarm1) and $0F);
    AlarmBellEdit2.Text := IntToStr(StrToInt(alarm2) shr 4);
    AlarmStopEdit2.Text := IntToStr(StrToInt(alarm2) and $0F);
    AlarmBellEdit3.Text := IntToStr(StrToInt(alarm3) shr 4);
    AlarmStopEdit3.Text := IntToStr(StrToInt(alarm3) and $0F);
    AlarmBellEdit4.Text := IntToStr(StrToInt(alarm4) shr 4);
    AlarmStopEdit4.Text := IntToStr(StrToInt(alarm4) and $0F);
    SetLamp(3);
  end else
    SetLamp(1);

  S := STringOfChar(' ',8);
  if ascGetHolidayCount(hComDev,1,devid,S)=0 then
  begin
    HolidaysEdit.Text := S;
    SetLamp(3);
  end else
    SetLamp(1);

  HolidayMemo.Lines.Clear;
  for i:=0 to StrToInt(HolidaysEdit.Text)-1 do
  begin
    S := STringOfChar(' ',8);
    if ascGetHoliday(hComDev,1,devid,i,S)=0 then
    begin
      HolidayMemo.Lines.Add('20'+Copy(S,1,2)+'-'+Copy(S,3,2)+'-'+Copy(S,5,2));
      SetLamp(3);
    end else
      SetLamp(1);
  end;
end;

procedure TASC2SetupForm.WriteHoliAlmButtonClick(Sender: TObject);
var
  alarm1,alarm2,alarm3,alarm4: Byte;
  S: string;
  i: Smallint;
begin
  alarm1 := StrToInt(AlarmBellEdit1.Text)*16+StrToInt(AlarmStopEdit1.Text);
  alarm2 := StrToInt(AlarmBellEdit2.Text)*16+StrToInt(AlarmStopEdit2.Text);
  alarm3 := StrToInt(AlarmBellEdit3.Text)*16+StrToInt(AlarmStopEdit3.Text);
  alarm4 := StrToInt(AlarmBellEdit4.Text)*16+StrToInt(AlarmStopEdit4.Text);
  SetLamp(2);
  if ascSetAlarmCode(hComDev,1,devid,alarm1,alarm2,alarm3,alarm4)=0 then
    SetLamp(3)
  else
    SetLamp(1);

  for i:=0 to HolidayMemo.Lines.Count-1 do
  begin
    S := Copy(HolidayMemo.Lines[i],3,2);
    S := S+Copy(HolidayMemo.Lines[i],6,2);
    S := S+Copy(HolidayMemo.Lines[i],9,2);
    if ascAddHoliday(hComDev,1,devid,S)=0 then
      SetLamp(3)
    else
      SetLamp(1);
  end;
end;

procedure TASC2SetupForm.ClrHoliButtonClick(Sender: TObject);
begin
  HolidaysEdit.Text := '0';
  HolidayMemo.Lines.Clear;
  if ascClrHolidayCount(hComDev,1,devid)=0 then
    SetLamp(3)
  else
    SetLamp(1);
end;

procedure TASC2SetupForm.HolidayPickerDblClick(Sender: TObject);
begin
  HolidayMemo.Lines.Add(DateToStr(HolidayPicker.Date));
end;

// 读头

procedure TASC2SetupForm.WritePropButtonClick(Sender: TObject);
var
  ctrl,event: Word;
  i,actime: Byte;
  password: string;
  alarm: array[0..255] of Byte;
begin
  ctrl := $0000;
  if PINChkBoxL.Checked then ctrl := ctrl or $8000;
  if PasswordChkBoxL.Checked then ctrl := ctrl or $4000;
  if MstSlvChkBoxL.Checked then ctrl := ctrl or $2000;
  if AntiPassBackChkBoxL.Checked then ctrl := ctrl or $1000;
  if ExitButtonChkBoxL.Checked then ctrl := ctrl or $0800;
  if LockStatusChkBoxL.Checked then ctrl := ctrl or $0400;
  if INCChkBoxL.Checked then ctrl := ctrl or $0200;
  if InterLockChkBox.Checked then ctrl := ctrl or $0100;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -