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

📄 main.pas

📁 小区水费管理系统源代码水费收费管理系统 水费收费管理系统
💻 PAS
📖 第 1 页 / 共 3 页
字号:
  end;
end;

procedure TfrmMain.btnReplaceImageClick(Sender: TObject);
var
  Bmp: TSeBitmap;
begin
  if FSkinSource = nil then Exit;
  if FSelectedBitmap = nil then Exit;

  { Replace Image }
  FModified := true;

  Bmp := OpenSkinBitmap;
  if Bmp <> nil then
  begin
    { Add Image }
    FSkinSource.ReplaceBitmap(FSelectedBitmap, Bmp);

    FSelectedBitmap := Bmp;
    UpdateSkin;
    SelectBitmap(FSelectedBitmap);
  end;
end;

procedure TfrmMain.btnDelImageClick(Sender: TObject);
begin
  if FSelectedBitmap = nil then Exit;
  FSkinSource.Bitmaps.Remove(FSelectedBitmap);

  FModified := true;

  FSelectedBitmap.Free;
  FSelectedBitmap := nil;
  ImageView.Picture.Bitmap := nil;
  FRoot := nil;

  UpdateSkin;
end;

{ Object creation }

procedure TfrmMain.btnSkinObjectClick(Sender: TObject);
begin
  CreateSkinObject(TSeSkinObject);
end;

procedure TfrmMain.btnBitmapSkinObjectClick(Sender: TObject);
begin
  CreateSkinObject(TSeBitmapSkinObject);
end;

procedure TfrmMain.SpeedButton2Click(Sender: TObject);
begin
  CreateSkinObject(TSeFormBitmapSkinObject);
end;

procedure TfrmMain.SpeedButton3Click(Sender: TObject);
begin
  CreateSkinObject(TSeSysButtonSkinObject);
end;

procedure TfrmMain.SpeedButton4Click(Sender: TObject);
begin
  CreateSkinObject(TSeLinkSkinObject);
end;

procedure TfrmMain.SpeedButton5Click(Sender: TObject);
begin
  CreateSkinObject(TSeActiveSkinObject);
end;

procedure TfrmMain.SpeedButton6Click(Sender: TObject);
begin
  CreateSkinObject(TSeColorButtonObject);
end;

procedure TfrmMain.SpeedButton7Click(Sender: TObject);
begin
  CreateSkinObject(TSeBitmapBoxObject);
end;

procedure TfrmMain.SpeedButton8Click(Sender: TObject);
begin
  CreateSkinObject(TSeActiveBitmapBoxObject);
end;

procedure TfrmMain.SpeedButton9Click(Sender: TObject);
begin
  CreateSkinObject(TSeButtonBitmapBoxObject);
end;

procedure TfrmMain.SpeedButton10Click(Sender: TObject);
begin
  CreateSkinObject(TSeRollPanelObject);
end;

procedure TfrmMain.btnBitmapObjectClick(Sender: TObject);
begin
  { BitmapObject }
  CreateSkinObject(TSeBitmapObject);
end;

procedure TfrmMain.btnActiveObjectClick(Sender: TObject);
begin
  { Active Object }
  CreateSkinObject(TSeActiveObject);
end;

procedure TfrmMain.btnActiveBitmapClick(Sender: TObject);
begin
  { ActiveBitmap }
  CreateSkinObject(TSeActiveBitmap);
end;

procedure TfrmMain.btnSystemButtonClick(Sender: TObject);
begin
  { System Button }
  CreateSkinObject(TSeSystemButton);
end;

procedure TfrmMain.btnButtonObjectClick(Sender: TObject);
begin
  { Button Object }
  CreateSkinObject(TSeButtonObject);
end;

procedure TfrmMain.btnTextObjectClick(Sender: TObject);
begin
  { Button Object }
  CreateSkinObject(TSeTextObject);
end;

procedure TfrmMain.actnTestEmptyExecute(Sender: TObject);
begin
  { Save skin to temp file }
  FSkinSource.SaveToFile(TempSkinFile);

  { Test }
  frmTestEmpty := TfrmTestEmpty.Create(Self);
  try
    DesignMode := false;
    frmTestEmpty.SE.SkinFile := TempSkinFile;

    frmTestEmpty.ShowModal;
  finally
    DesignMode := true;
    frmTestEmpty.Free;
  end;
end;

procedure TfrmMain.actnTestExecute(Sender: TObject);
begin
  { Save skin to temp file }
  FSkinSource.SaveToFile(TempSkinFile);

  { Test }
  frmTest := TfrmTest.Create(Self);
  try
    DesignMode := false;
    frmTest.SE.SkinFile := TempSkinFile;
    frmTest.ShowModal;
  finally
    frmTest.Free;
    DesignMode := true;
  end;
end;

procedure TfrmMain.SpeedButton13Click(Sender: TObject);
begin
  SaveSkin;
  { Test }
  frmTest := TfrmTest.Create(Self);
  try
    frmTest.SE.SkinFile := FFileName;
    frmTest.ShowModal;
  finally
    frmTest.Free;
  end;
end;

procedure TfrmMain.btnBackClick(Sender: TObject);
var
  Owner: TSeSkinObject;
begin
  { Back }
  if (FSelected <> nil) and (FSelected.Owner <> nil) and
     (FSelected.Owner is TSeSkinObject)
  then
  begin
    Owner := FSelected.Owner as TSeSkinObject;

    TCompAccess(Owner).SetChildOrder(FSelected, 0); 

    UpdateSkin;

    FModified := true;
    Exit;
  end;
end;

procedure TfrmMain.TabsChange(Sender: TObject);
begin
  case Tabs.TabIndex of
    0: PageStandard.BringToFront;
    1: PageOld.BringToFront;
  end;
end;

procedure TfrmMain.actnCopyExecute(Sender: TObject);
var
  S: TStringStream;
  SkinObject: TSeSkinObject;
  Data: THandle;
  DataPtr: Pointer;
  Size: Cardinal;
begin
  if FSkinSource = nil then Exit;

  { Copy }
  if (FSelected <> nil) then
  begin
    SkinObject := FSelected.CreateCopy(nil);
    SkinObject.Name := 'CopyOf'+SkinObject.Name;

    S := TStringStream.Create('');
    try
      SaveSkinObject(S, SkinObject);

      FMyClipboard := S.DataString;
      Size := Length(FMyClipboard);

      FMyClipboard := IntToStr(Size) + '@' + FMyClipboard;

      Size := Length(FMyClipboard);

      Data := GlobalAlloc(GMEM_MOVEABLE + GMEM_DDESHARE, Size + 1);
      try
        DataPtr := GlobalLock(Data);
        try
          Move(PChar(FMyClipboard)^, DataPtr^, Size + 1);
          Clipboard.SetAsHandle(CF_COMPONENT, Data);
        finally
          GlobalUnlock(Data);
        end;
      except
        GlobalFree(Data);
        raise;
      end;

    finally
      S.Free;
      SkinObject.Free;
    end;
  end;
end;

procedure TfrmMain.actnPasteExecute(Sender: TObject);
var
  SkinObject: TSeSkinObject;
  S: TStringStream;
  Size: integer;
  Data: THandle;
begin
  if FSkinSource = nil then Exit;
  if not Clipboard.HasFormat(CF_COMPONENT) then Exit;

  SkinObject := nil;
  { Paste }
  if (FSelected <> nil) then
  begin
    Data := Clipboard.GetAsHandle(CF_COMPONENT);
    try
      if Data <> 0 then
      begin
        SaveData := GlobalLock(Data);

        Size := StrToInt(Copy(SaveData^, 1, Pos('@', SaveData^)-1));

        if Size > 0 then
        begin
          SetLength(FMyClipboard, Size);
          Move(SaveData[Pos('@', SaveData^)], PChar(FMyClipboard)^, Size);

          S := TStringStream.Create(FMyClipboard);
          try
            SkinObject := LoadSkinObject(S, FSelected);
            SkinObject.Bitmaps := FSkinSource.Bitmaps;
            SkinObject.AfterLoad;
          except
            raise Exception.Create('Invalid clipboard format');
          end;

          S.Free;
        end;
      end;
    finally
      if Data <> 0 then GlobalUnlock(Data);
    end;

    if SkinObject = nil then
    begin
      ShowMessage('Invalid clipboard format');
      Exit;
    end;

    FSelected.Aligning;

    { Add TSeSkinObject }
    FSelected := SkinObject;

    UpdateSkin;
    SelectObject(SkinObject);

    FModified := true;
  end
  else
    if FRoot <> nil then
    begin
      { To root }
      Data := Clipboard.GetAsHandle(CF_COMPONENT);
      try
        if Data <> 0 then
        begin
          SaveData := GlobalLock(Data);

          Size := StrToInt(Copy(SaveData^, 1, Pos('@', SaveData^)-1));

          if Size > 0 then
          begin
            SetLength(FMyClipboard, Size);
            Move(SaveData[Pos('@', SaveData^)], PChar(FMyClipboard)^, Size);

            S := TStringStream.Create(FMyClipboard);
            try
              SkinObject := LoadSkinObject(S, FRoot);
              SkinObject.Bitmaps := FSkinSource.Bitmaps;
              SkinObject.AfterLoad;
            except
              raise Exception.Create('Invalid clipboard format');
            end;

            S.Free;
          end;
        end;
      finally
        if Data <> 0 then GlobalUnlock(Data);
      end;

      if SkinObject = nil then
      begin
        ShowMessage('Invalid clipboard format');
      end;

      FRoot.Aligning;

      { Add TSeSkinObject }
      FSelected := SkinObject;

      UpdateSkin;
      SelectObject(SkinObject);

      FModified := true;
    end
    else
    begin
      { To nil root }
      Data := Clipboard.GetAsHandle(CF_COMPONENT);
      try
        if Data <> 0 then
        begin
          SaveData := GlobalLock(Data);

          Size := StrToInt(Copy(SaveData^, 1, Pos('@', SaveData^)-1));

          if Size > 0 then
          begin
            SetLength(FMyClipboard, Size);
            Move(SaveData[Pos('@', SaveData^)], PChar(FMyClipboard)^, Size);

            S := TStringStream.Create(FMyClipboard);
            try
              SkinObject := LoadSkinObject(S, nil);
              SkinObject.Bitmaps := FSkinSource.Bitmaps;
              SkinObject.AfterLoad;
            except
              raise Exception.Create('Invalid clipboard format');
            end;

            S.Free;
          end;
        end;
      finally
        if Data <> 0 then GlobalUnlock(Data);
      end;

      if SkinObject = nil then
      begin
        ShowMessage('Invalid clipboard format');
      end;

      FSkinSource.Add(SkinObject);
      { Add TSeSkinObject }
      FRoot := SkinObject;
      FSelected := SkinObject;

      UpdateSkin;
      SelectObject(SkinObject);

      FModified := true;
    end;
end;

procedure TfrmMain.Button1Click(Sender: TObject);
var
  i: integer;
  CharSet: Longint;
begin
  if FSkinSource = nil then Exit;
  { Set Charset }
  if IdentToCharset(cbCharset.Text, CharSet) then
  begin
    for i := 0 to FSkinSource.Count - 1 do
      FSkinSource.Objects[i].SetCharset(CharSet)
  end;
end;

procedure TfrmMain.KSDevelopmantSite1Click(Sender: TObject);
begin
  { Homepage }
  ShellExecute(0, 'open', 'http://www.ksdev.com', nil, nil, SW_SHOWNORMAL);
end;

procedure TfrmMain.AboutSkinBuilder1Click(Sender: TObject);
begin
  { About }
  frmAbout.ShowModal;
end;

procedure TfrmMain.DoInspectorChanging(Sender: TZPropList; var CanChange: Boolean);
begin
  { Save state }
  SaveState;
end;

procedure TfrmMain.DoInspectorChange(Sender: TObject);
begin
  { FInspector change }
  UpdateSkin;
  FModified := true;
end;

procedure TfrmMain.RestoreState;
begin
  { Restore state for Undo }
  if FStateNum = 0 then Exit;
  if FStateList.Count = 0 then Exit;

  { Restore }
  FSkinSource.Clear;
  TStateClass(FStateList[FStateNum-1]).Stream.Position := 0;
  FSkinSource.LoadFromStream(TStateClass(FStateList[FStateNum-1]).Stream);
  FRoot := FSkinSource.GetObjectByName(TStateClass(FStateList[FStateNum-1]).Root);
  FSelected := FSkinSource.GetObjectByName(TStateClass(FStateList[FStateNum-1]).Selected);

  { Free }
  TStateClass(FStateList[FStateNum-1]).Free;
  FStateList.Delete(FStateNum-1);
  Dec(FStateNum);

  { Update }
  UpdateSkin;
end;

procedure TfrmMain.SaveState;
var
  State: TStateClass;
begin
  { Save state for Undo }
  State := TStateClass.Create;
  FSkinSource.SaveToStream(State.Stream);
  if FRoot <> nil then
    State.Root := FRoot.Name;
  if FSelected <> nil then
    State.Selected := FSelected.Name;

  { Add to list }
  FStateList.Add(State);

  Inc(FStateNum);

  if FStateNum > 2 then
  begin
    TStateClass(FStateList[0]).Free;
    FStateList.Delete(0);
    Dec(FStateNum);
  end;
end;

procedure TfrmMain.actnUndoExecute(Sender: TObject);
begin
  RestoreState;
end;

procedure TfrmMain.actnExportExecute(Sender: TObject);
begin
  { Bitmaps export }
  frmExport := TfrmExport.Create(Self);
  frmExport.ShowModal;
  frmExport.Free;
end;

procedure TfrmMain.SpeedButton14Click(Sender: TObject);
begin
  { Pick color }
  frmPickColor.ShowModal;
end;

end.

⌨️ 快捷键说明

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