Revision | 485 (tree) |
---|---|
Time | 2020-02-03 11:03:44 |
Author | ![]() |
Ajustes para adequação com novas units exclusivas de ativadores de editores de propriedade/componente
Ajustes para adequação com novas units existentes em ToolsApi
Ajustes no KRKExperts para se adequar as novas units adicionadas
Arquivo de recurso desenecessário removido
Arquivos de leia-me adicionados ou alterados
@@ -12,6 +12,7 @@ | ||
12 | 12 | uses Controls |
13 | 13 | , KRK.Vcl.Controls |
14 | 14 | , KRK.Vcl.ExtCtrls |
15 | + , KRK.Vcl.ExtCtrls.Editors | |
15 | 16 | , KRK.Vcl.Utilities; |
16 | 17 | |
17 | 18 | const |
@@ -9,7 +9,8 @@ | ||
9 | 9 | uses DesignIntf |
10 | 10 | , DesignEditors |
11 | 11 | , KRK.Vcl.Forms |
12 | - , KRK.Rtl.Common.Classes; | |
12 | + , KRK.Rtl.Common.Classes | |
13 | + , KRK.ToolsApi.Rtl.Common.Classes; | |
13 | 14 | |
14 | 15 | procedure Register; |
15 | 16 | begin |
@@ -9,6 +9,7 @@ | ||
9 | 9 | uses Classes |
10 | 10 | , DesignIntf |
11 | 11 | , KRK.Vcl.DBGrids |
12 | + , KRK.Vcl.DBGrids.Editors | |
12 | 13 | , KRK.Vcl.DBCtrls |
13 | 14 | , KRK.DataSnap.DBClient |
14 | 15 | , KRK.DataSnap.Provider; |
@@ -8,7 +8,7 @@ | ||
8 | 8 | , ImgList |
9 | 9 | , Controls |
10 | 10 | , UPngImageList |
11 | - , KRK.Rtl.Common.Classes | |
11 | + , KRK.ToolsApi.Rtl.Common.Classes | |
12 | 12 | , KRK.ToolsApi.Components.IDEMainMenu; |
13 | 13 | |
14 | 14 | type |
@@ -61,7 +61,7 @@ | ||
61 | 61 | <VerInfo_IncludeVerInfo>true</VerInfo_IncludeVerInfo> |
62 | 62 | <VerInfo_Keys>CompanyName=;FileDescription=$(MSBuildProjectName);FileVersion=1.0.0.0;InternalName=;LegalCopyright=;LegalTrademarks=;OriginalFilename=;ProgramID=com.embarcadero.$(MSBuildProjectName);ProductName=$(MSBuildProjectName);ProductVersion=1.0.0.0;Comments=</VerInfo_Keys> |
63 | 63 | <VerInfo_Locale>1033</VerInfo_Locale> |
64 | - <DCC_UsePackage>KRKOTAComponentsR;$(DCC_UsePackage)</DCC_UsePackage> | |
64 | + <DCC_UsePackage>KRKOTAComponentsR;KRKLib;$(DCC_UsePackage)</DCC_UsePackage> | |
65 | 65 | </PropertyGroup> |
66 | 66 | <PropertyGroup Condition="'$(Cfg_1)'!=''"> |
67 | 67 | <DCC_Define>DEBUG;$(DCC_Define)</DCC_Define> |
@@ -11,7 +11,7 @@ | ||
11 | 11 | uses Classes |
12 | 12 | , ToolsAPI |
13 | 13 | , DesignIntf |
14 | - , KRK.Rtl.Common.Classes | |
14 | + , KRK.ToolsApi.Rtl.Common.Classes | |
15 | 15 | , KRK.ToolsApi.Components.EditorSubView |
16 | 16 | , KRK.ToolsApi.Components.EditServicesNotifier |
17 | 17 | , KRK.ToolsApi.Components.IDENotifier |
@@ -20,7 +20,9 @@ | ||
20 | 20 | , KRK.ToolsApi.Components.RepositoryWizard |
21 | 21 | , KRK.ToolsApi.Components.ModuleCreator |
22 | 22 | , KRK.ToolsApi.Components.IDEInsightItem |
23 | - , KRK.ToolsApi.Components.IDEMainMenu; | |
23 | + , KRK.ToolsApi.Components.IDEInsightItem.Editors | |
24 | + , KRK.ToolsApi.Components.IDEMainMenu | |
25 | + , KRK.ToolsApi.Components.IDEMainMenu.Editors; | |
24 | 26 | |
25 | 27 | procedure Register; |
26 | 28 | begin |
@@ -8,7 +8,8 @@ | ||
8 | 8 | |
9 | 9 | uses Classes |
10 | 10 | , DesignIntf |
11 | - , KRK.Vcl.ComCtrls; | |
11 | + , KRK.Vcl.ComCtrls | |
12 | + , KRK.Vcl.ComCtrls.Editors; | |
12 | 13 | |
13 | 14 | const |
14 | 15 | PageName = 'Anak Krakatoa Win32 Controls'; |
@@ -109,7 +109,6 @@ | ||
109 | 109 | KRK.Rtl.Common.ZLib.ZLibApi in '..\..\SRC\Rtl\Common\ZLib\KRK.Rtl.Common.ZLib.ZLibApi.pas', |
110 | 110 | KRK.Rtl.Common.ZLib.ZLibGZ in '..\..\SRC\Rtl\Common\ZLib\KRK.Rtl.Common.ZLib.ZLibGZ.pas', |
111 | 111 | KRK.Vcl.ExtCtrls in '..\..\SRC\Vcl\KRK.Vcl.ExtCtrls.pas', |
112 | - KRK.Vcl.ExtCtrls.RTFLabel.CaptionEditor in '..\..\SRC\Vcl\KRK.Vcl.ExtCtrls.RTFLabel.CaptionEditor.pas' {FormRTFLabelCaptionEditor}, | |
113 | 112 | KRK.Vcl.Controls in '..\..\SRC\Vcl\KRK.Vcl.Controls.pas', |
114 | 113 | KRK.Vcl.StdCtrls in '..\..\SRC\Vcl\KRK.Vcl.StdCtrls.pas', |
115 | 114 | KRK.Vcl.ExtActns in '..\..\SRC\Vcl\KRK.Vcl.ExtActns.pas', |
@@ -141,6 +140,7 @@ | ||
141 | 140 | KRK.ToolsApi.Components.IDEInsightItem.Editors in '..\..\src\ToolsAPI\Components\KRK.ToolsApi.Components.IDEInsightItem.Editors.pas', |
142 | 141 | KRK.ToolsApi.Components.IDEMainMenu.Editors in '..\..\src\ToolsAPI\Components\KRK.ToolsApi.Components.IDEMainMenu.Editors.pas', |
143 | 142 | KRK.Vcl.ComCtrls.Editors in '..\..\src\Vcl\KRK.Vcl.ComCtrls.Editors.pas', |
144 | - KRK.Vcl.ExtCtrls.Editors in '..\..\src\Vcl\KRK.Vcl.ExtCtrls.Editors.pas'; | |
143 | + KRK.Vcl.ExtCtrls.Editors in '..\..\src\Vcl\KRK.Vcl.ExtCtrls.Editors.pas', | |
144 | + KRK.ToolsApi.Editors.RTFLabel.CaptionEditor in '..\..\src\ToolsAPI\Editors\KRK.ToolsApi.Editors.RTFLabel.CaptionEditor.pas' {FormRTFLabelCaptionEditor}; | |
145 | 145 | |
146 | 146 | end. |
@@ -121,10 +121,6 @@ | ||
121 | 121 | <DCCReference Include="..\..\SRC\Rtl\Common\ZLib\KRK.Rtl.Common.ZLib.ZLibApi.pas"/> |
122 | 122 | <DCCReference Include="..\..\SRC\Rtl\Common\ZLib\KRK.Rtl.Common.ZLib.ZLibGZ.pas"/> |
123 | 123 | <DCCReference Include="..\..\SRC\Vcl\KRK.Vcl.ExtCtrls.pas"/> |
124 | - <DCCReference Include="..\..\SRC\Vcl\KRK.Vcl.ExtCtrls.RTFLabel.CaptionEditor.pas"> | |
125 | - <Form>FormRTFLabelCaptionEditor</Form> | |
126 | - <FormType>dfm</FormType> | |
127 | - </DCCReference> | |
128 | 124 | <DCCReference Include="..\..\SRC\Vcl\KRK.Vcl.Controls.pas"/> |
129 | 125 | <DCCReference Include="..\..\SRC\Vcl\KRK.Vcl.StdCtrls.pas"/> |
130 | 126 | <DCCReference Include="..\..\SRC\Vcl\KRK.Vcl.ExtActns.pas"/> |
@@ -165,6 +161,10 @@ | ||
165 | 161 | <DCCReference Include="..\..\src\ToolsAPI\Components\KRK.ToolsApi.Components.IDEMainMenu.Editors.pas"/> |
166 | 162 | <DCCReference Include="..\..\src\Vcl\KRK.Vcl.ComCtrls.Editors.pas"/> |
167 | 163 | <DCCReference Include="..\..\src\Vcl\KRK.Vcl.ExtCtrls.Editors.pas"/> |
164 | + <DCCReference Include="..\..\src\ToolsAPI\Editors\KRK.ToolsApi.Editors.RTFLabel.CaptionEditor.pas"> | |
165 | + <Form>FormRTFLabelCaptionEditor</Form> | |
166 | + <FormType>dfm</FormType> | |
167 | + </DCCReference> | |
168 | 168 | <BuildConfiguration Include="Base"> |
169 | 169 | <Key>Base</Key> |
170 | 170 | </BuildConfiguration> |
@@ -1 +0,0 @@ | ||
1 | -Units cujos nomes terminam com o sufixo "Editors" contém os "ativadores de editores de componentes", classes que dependem de DesignIntf, DesignEditors, etc., e normalmente chamam editores de propriedade ou de componente contidos na pasta ToolsApi\Editors. Foi necessário mover tais ativadores para units exclusivas para remover a dependência existente entre as units dos componentes e DesignIde.dcp. Ao não fazer isso, toda vez que se dava uses em uma unit de um componente, como o KRKDBGrid que tem um editor de propriedade, o programa final não compilava porque ele requeria ToolsApi, que está dentro de DesignIde, obrigando o desenvolvedor a compilar seu programa com Runtime Packages, o que nem sempre é desejado | |
\ No newline at end of file |
@@ -0,0 +1,142 @@ | ||
1 | +unit KRK.ToolsApi.Editors.RTFLabel.CaptionEditor; | |
2 | + | |
3 | +interface | |
4 | + | |
5 | +uses DesignWindows | |
6 | + , ComCtrls | |
7 | + , UPNGBitBtn | |
8 | + , Dialogs | |
9 | + , ActnList | |
10 | + , ExtActns | |
11 | + , ExtCtrls | |
12 | + , UPNGImageList | |
13 | + , StdActns | |
14 | + , Windows | |
15 | + , StdCtrls | |
16 | + , Classes | |
17 | + , Forms | |
18 | + , Controls | |
19 | + , ImgList | |
20 | + , Buttons | |
21 | + , ToolWin; | |
22 | + | |
23 | +type | |
24 | + TFormRTFLabelCaptionEditor = class(TDesignWindow) | |
25 | + RIED: TRichEdit; | |
26 | + PNBBCancel: TPngBitBtn; | |
27 | + PNBBOK: TPngBitBtn; | |
28 | + OPDI: TOpenDialog; | |
29 | + ACLI: TActionList; | |
30 | + ACTNCenter: TRichEditAlignCenter; | |
31 | + ToolBar1: TToolBar; | |
32 | + TOBULoad: TToolButton; | |
33 | + PANL: TPanel; | |
34 | + ACTNLoad: TAction; | |
35 | + PNIL: TPngImageList; | |
36 | + TOBUCenter: TToolButton; | |
37 | + TOBUSeparator1: TToolButton; | |
38 | + ACTNLeft: TRichEditAlignLeft; | |
39 | + ACTNRight: TRichEditAlignRight; | |
40 | + TOBURight: TToolButton; | |
41 | + TOBULeft: TToolButton; | |
42 | + TOBUSeparator2: TToolButton; | |
43 | + TOBUBold: TToolButton; | |
44 | + ACTNBold: TRichEditBold; | |
45 | + ACTNItalic: TRichEditItalic; | |
46 | + ACTNUnderline: TRichEditUnderline; | |
47 | + ACTNStrikeOut: TRichEditStrikeOut; | |
48 | + ACTNBullet: TRichEditBullets; | |
49 | + TOBUItalic: TToolButton; | |
50 | + TOBUUnderline: TToolButton; | |
51 | + TOBUStrikeOut: TToolButton; | |
52 | + TOBUSeparator3: TToolButton; | |
53 | + TOBUBullet: TToolButton; | |
54 | + ACTNFont: TFontEdit; | |
55 | + TOBUFont: TToolButton; | |
56 | + ACTNCut: TEditCut; | |
57 | + ACTNCopy: TEditCopy; | |
58 | + ACTNPaste: TEditPaste; | |
59 | + ACTNUndo: TEditUndo; | |
60 | + TOBUCut: TToolButton; | |
61 | + TOBUCopy: TToolButton; | |
62 | + TOBUPaste: TToolButton; | |
63 | + TOBUUndo: TToolButton; | |
64 | + TOBUSeparator4: TToolButton; | |
65 | + procedure ACTNLoadExecute(Sender: TObject); | |
66 | + procedure ACTNFontBeforeExecute(Sender: TObject); | |
67 | + procedure ACTNFontAccept(Sender: TObject); | |
68 | + private | |
69 | + { Private declarations } | |
70 | + function CurrentSelection: TTextAttributes; | |
71 | + public | |
72 | + { Public declarations } | |
73 | + class function ShowMe(AText: String): String; | |
74 | + end; | |
75 | + | |
76 | +implementation | |
77 | + | |
78 | +{$R *.dfm} | |
79 | + | |
80 | +{ TFormRTFLabelCaptionEditor } | |
81 | + | |
82 | +procedure TFormRTFLabelCaptionEditor.ACTNFontAccept(Sender: TObject); | |
83 | +begin | |
84 | + CurrentSelection.Assign(TFontEdit(Sender).Dialog.Font); | |
85 | +end; | |
86 | + | |
87 | +procedure TFormRTFLabelCaptionEditor.ACTNFontBeforeExecute(Sender: TObject); | |
88 | +begin | |
89 | + TFontEdit(Sender).Dialog.Font.Assign(CurrentSelection); | |
90 | +end; | |
91 | + | |
92 | +procedure TFormRTFLabelCaptionEditor.ACTNLoadExecute(Sender: TObject); | |
93 | +begin | |
94 | + if OPDI.Execute then | |
95 | + RIED.Lines.LoadFromFile(OPDI.FileName); | |
96 | +end; | |
97 | + | |
98 | +function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric; FontType: Integer; Data: Pointer): Integer; stdcall; | |
99 | +begin | |
100 | + TComboBox(Data).Items.Add(LogFont.lfFaceName); | |
101 | + Result := 1; | |
102 | +end; | |
103 | + | |
104 | +function TFormRTFLabelCaptionEditor.CurrentSelection: TTextAttributes; | |
105 | +begin | |
106 | + if RIED.SelLength > 0 then | |
107 | + Result := RIED.SelAttributes | |
108 | + else | |
109 | + Result := RIED.DefAttributes; | |
110 | +end; | |
111 | + | |
112 | +class function TFormRTFLabelCaptionEditor.ShowMe(AText: String): String; | |
113 | +var | |
114 | + SS: TStringStream; | |
115 | +begin | |
116 | + Result := AText; | |
117 | + | |
118 | + with Self.Create(Application) do | |
119 | + try | |
120 | + SS := TStringStream.Create(AText); | |
121 | + try | |
122 | + RIED.Lines.LoadFromStream(SS); | |
123 | + finally | |
124 | + SS.Free; | |
125 | + end; | |
126 | + | |
127 | + if ShowModal = mrOk then | |
128 | + begin | |
129 | + SS := TStringStream.Create(''); | |
130 | + try | |
131 | + RIED.Lines.SaveToStream(SS); | |
132 | + Result := SS.DataString; | |
133 | + finally | |
134 | + SS.Free; | |
135 | + end; | |
136 | + end; | |
137 | + finally | |
138 | + Free; | |
139 | + end; | |
140 | +end; | |
141 | + | |
142 | +end. |
@@ -1 +1,25 @@ | ||
1 | -Todos os editores de componentes e propriedades se encontram nesta pasta. Editores de componentes e propriedades são forms especiais que atuam sobre componentes e propriedades fornecendo uma interface ao programador, que facilita a edição de um componente como um todo (Editor de componente) ou de uma propriedade específica (Editor de propriedade) | |
\ No newline at end of file | ||
1 | +Do ponto de vista do Delphi, isto é, segundo sua literatura, editores de propriedade e de componente são ativadores, que herdam de TComponentEditor ou TPropertyEditor, dentre outros. Um ativador de um editor de componente chama-se T<NomeDoComponenteSemOPrefixoKRK>Editor e um ativador de um editor de propriedade chama-se T<NomeDoComponenteSemOPrefixoKRK><NomeDaPropriedade>Property. Esta não é a convenção usada pelo Delphi, a qual não inclui o nome do componente, mas como no KRK vários ativadores de componentes podem estar na mesma unit, seria provável existir um editor de propriedade com o mesmo nome para componentes distintos, mas com funcionalidades diferentes, o que não é possível. Tais "ativadores" encontram-se nas units que tem o mesmo nome das units dos componentes que eles manipulam, porém com o sufixo "Editors". | |
2 | + | |
3 | +Units cujos nomes terminam com o sufixo "Editors" contém os "ativadores de editores de componentes", classes que dependem de DesignIntf, DesignEditors, etc., e normalmente chamam editores de propriedade ou de componente contidos nesta pasta. Foi necessário mover tais ativadores para units exclusivas para remover a dependência existente entre as units dos componentes e DesignIde.dcp. Ao não fazer isso, toda vez que se dava uses em uma unit de um componente, como o KRKDBGrid que tem um editor de propriedade, o programa final não compilava porque ele requeria ToolsApi, que está dentro de DesignIde, obrigando o desenvolvedor a compilar seu programa com Runtime Packages, o que nem sempre é desejado | |
4 | + | |
5 | +Do meu ponto de vista, editores de componentes e propriedades são forms especiais que atuam sobre componentes e propriedades fornecendo uma interface ao programador, que facilita a edição de um componente como um todo (Editor de componente) ou de uma propriedade específica (Editor de propriedade). | |
6 | + | |
7 | +Todos os editores de componentes e propriedades (segundo meu ponto de vista) se encontram nesta pasta. Estes editores encontram-se em units cujos nomes seguem o seguinte padrão: | |
8 | + | |
9 | +KRK.ToolsApi.Editors.<NomeDoComponenteSemOPrefixoKRK>.[NomeDaPropriedade]Editor.pas | |
10 | + | |
11 | +As seguintes regras se aplicam: | |
12 | + | |
13 | +> "NomeDaPropriedade" não deve ser utilizado, caso o editor atue no componente "NomeDoComponenteSemOPrefixoKRK" como um todo, por exemplo, um editor para o componente TKRKRTFLabel estaria na unit KRK.ToolsApi.Editors.RTFLabel.Editor.pas | |
14 | + | |
15 | +> "NomeDaPropriedade" é obrigatório caso a unit contenha um editor que atue numa propriedade específica apenas, por exemplo, um editor para a propriedade Caption de TKRKRTFLabel estaria na unit KRK.ToolsApi.Editors.RTFLabel.CaptionEditor.pas | |
16 | + | |
17 | +Os nomes das classes de editores de propriedades e componentes seguem o seguinte padrão: | |
18 | + | |
19 | +TForm<NomeDoComponenteSemOPrefixoKRK>[NomeDaPropriedade]Editor | |
20 | + | |
21 | +As seguintes regras se aplicam: | |
22 | + | |
23 | +> "NomeDaPropriedade" não deve ser utilizado, caso a classe do form atue no componente "NomeDoComponenteSemOPrefixoKRK" como um todo, por exemplo, a classe de um editor para o componente TKRKRTFLabel se chamaria TFormRTFLabelEditor | |
24 | + | |
25 | +> "NomeDaPropriedade" é obrigatório caso a classe do form atue numa propriedade específica apenas, por exemplo, a classe de um editor para a propriedade Caption do componente TKRKRTFLabel se chamaria TFormRTFLabelCaptionEditor | |
\ No newline at end of file |
@@ -1,5 +1,3 @@ | ||
1 | 1 | A pasta ToolsApi é "um mundo a parte" dentro do KRK. Todas as units que aqui existem funcionam apenas em pacotes ou dlls de experts, utilizadas em Designtime pelo Delphi. Se são designtime, por que não estão dentro da pasta dtp? Porque do ponto de vista de pacotes e experts (utilizados em designtime) estas units são runtime. Em outras palavras, aquilo que existe nesta pasta são units de runtime usadas exclusivamente por projetos (pacotes e dlls) de designtime. |
2 | 2 | |
3 | -A estrutura interna de pastas, com exceção da pasta Components, segue o mesmo princípio das pastas existentes em KRK, por exemplo, aqui há a pasta Rtl, que segue o estilo de nomenclatura idêntico aquele existente na pasta Rtl que se encontra um nível acima, porém, este é o Rtl do ponto de vista de ToolsAPI. | |
4 | - | |
5 | -KRK.ToolsApi.Rtl.Common.Classes.pas, por exemplo, é uma unit que contém aquilo que originalmente seria colocado na unit KRK.Rtl.Common.Classes.pas, porém isso faria esta ultima unit ficar dependente de DesignIde, que só deve ser usado em pacotes e dlls de experts e por isso houve essa necessidade de diferenciação | |
\ No newline at end of file | ||
3 | +A estrutura interna de pastas, com exceção das pastas Components e Editors, segue a mesma estrutura das pastas existentes em KRK, por exemplo, aqui há a pasta Rtl, que segue o estilo de nomenclatura idêntico aquele existente na pasta Rtl que se encontra um nível acima, porém, este é o Rtl do ponto de vista de ToolsAPI. KRK.ToolsApi.Rtl.Common.Classes.pas, por exemplo, é uma unit que contém aquilo que originalmente seria colocado na unit KRK.Rtl.Common.Classes.pas, porém isso faria esta ultima unit ficar dependente de DesignIde, que só deve ser usado em pacotes e dlls de experts e por isso houve essa necessidade de diferenciação | |
\ No newline at end of file |
@@ -1,9 +0,0 @@ | ||
1 | -Editores de propriedade e de componente são ativadores, que herdam de TComponentEditor ou TPropertyEditor. Um ativador de um editor de componente chama-se TNomeDoComponenteEditor e um ativador de um editor de propriedade chama-se TNomeDoComponenteNomeDaPropriedadeProperty, esta não é a convenção usada pelo Delphi, a qual não inclui o nome do componente, mas como no KRK vários componentes podem estar na mesma unit, seria provável existir um editor de propriedade com o mesmo nome para componentes distintos, mas com funcionalidades diferentes, o que não é possível. Tais "ativadores" encontram-se nas units que tem o mesmo nome das units dos componentes que eles manipulam, porém com o sufixo "Editors". | |
2 | - | |
3 | -Forms ou Frames que são exibidos quando um ativador é executado encontram-se em units que tem o mesmo nome da unit onde a classe do componente associado está, mais o nome da classe do componente (sem o prefixo TKRK), mais: | |
4 | - | |
5 | -> Caso seja um editor de componente que atue no componente como um todo, ou que manipule mais de uma propriedade (mais de um item no menu de contexto) adiciona-se apenas um ponto seguido da palavra Editor no final, por exemplo, um editor para o componente TKRKRTFLabel estaria na unit KRK.Vcl.ExtCtrls.RTFLabel.Editor.pas | |
6 | - | |
7 | -> Caso seja um editor de propriedade adiciona-se um ponto, mais o nome da propriedade seguido da palavra editor, por exemplo, um editor para a propriedade Caption de TKRKRTFLabel estará na unit KRK.Vcl.ExtCtrls.RTFLabel.CaptionEditor.pas | |
8 | - | |
9 | -As classes dos Forms/Frames supramencionados usam o prefixo Form/Frame, mais nome do componente (sem o prefixo TKRK), mais o nome da propriedade, mais o sufixo Editor, por exemplo, a unit KRK.Vcl.ExtCtrls.RTFLabel.CaptionEditor.pas contém uma classe TFormRTFLabelCaptionEditor que atua na propriedade Caption de TKRKRTFLabel. Já a unit KRK.Vcl.ExtCtrls.RTFLabel.Editor.pas conteria uma classe TFormRTFLabelEditor. | |
\ No newline at end of file |
@@ -1 +0,0 @@ | ||
1 | -Units cujos nomes terminam com o sufixo "Editors" contém os "ativadores de editores de componentes", classes que dependem de DesignIntf, DesignEditors, etc., e normalmente chamam editores de propriedade ou de componente contidos na pasta ToolsApi\Editors. Foi necessário mover tais ativadores para units exclusivas para remover a dependência existente entre as units dos componentes e DesignIde.dcp. Ao não fazer isso, toda vez que se dava uses em uma unit de um componente, como o KRKDBGrid que tem um editor de propriedade, o programa final não compilava porque ele requeria ToolsApi, que está dentro de DesignIde, obrigando o desenvolvedor a compilar seu programa com Runtime Packages, o que nem sempre é desejado | |
\ No newline at end of file |
@@ -1,142 +0,0 @@ | ||
1 | -unit KRK.Vcl.ExtCtrls.RTFLabel.CaptionEditor; | |
2 | - | |
3 | -interface | |
4 | - | |
5 | -uses DesignWindows | |
6 | - , ComCtrls | |
7 | - , UPNGBitBtn | |
8 | - , Dialogs | |
9 | - , ActnList | |
10 | - , ExtActns | |
11 | - , ExtCtrls | |
12 | - , UPNGImageList | |
13 | - , StdActns | |
14 | - , Windows | |
15 | - , StdCtrls | |
16 | - , Classes | |
17 | - , Forms | |
18 | - , Controls | |
19 | - , ImgList | |
20 | - , Buttons | |
21 | - , ToolWin; | |
22 | - | |
23 | -type | |
24 | - TFormRTFLabelCaptionEditor = class(TDesignWindow) | |
25 | - RIED: TRichEdit; | |
26 | - PNBBCancel: TPngBitBtn; | |
27 | - PNBBOK: TPngBitBtn; | |
28 | - OPDI: TOpenDialog; | |
29 | - ACLI: TActionList; | |
30 | - ACTNCenter: TRichEditAlignCenter; | |
31 | - ToolBar1: TToolBar; | |
32 | - TOBULoad: TToolButton; | |
33 | - PANL: TPanel; | |
34 | - ACTNLoad: TAction; | |
35 | - PNIL: TPngImageList; | |
36 | - TOBUCenter: TToolButton; | |
37 | - TOBUSeparator1: TToolButton; | |
38 | - ACTNLeft: TRichEditAlignLeft; | |
39 | - ACTNRight: TRichEditAlignRight; | |
40 | - TOBURight: TToolButton; | |
41 | - TOBULeft: TToolButton; | |
42 | - TOBUSeparator2: TToolButton; | |
43 | - TOBUBold: TToolButton; | |
44 | - ACTNBold: TRichEditBold; | |
45 | - ACTNItalic: TRichEditItalic; | |
46 | - ACTNUnderline: TRichEditUnderline; | |
47 | - ACTNStrikeOut: TRichEditStrikeOut; | |
48 | - ACTNBullet: TRichEditBullets; | |
49 | - TOBUItalic: TToolButton; | |
50 | - TOBUUnderline: TToolButton; | |
51 | - TOBUStrikeOut: TToolButton; | |
52 | - TOBUSeparator3: TToolButton; | |
53 | - TOBUBullet: TToolButton; | |
54 | - ACTNFont: TFontEdit; | |
55 | - TOBUFont: TToolButton; | |
56 | - ACTNCut: TEditCut; | |
57 | - ACTNCopy: TEditCopy; | |
58 | - ACTNPaste: TEditPaste; | |
59 | - ACTNUndo: TEditUndo; | |
60 | - TOBUCut: TToolButton; | |
61 | - TOBUCopy: TToolButton; | |
62 | - TOBUPaste: TToolButton; | |
63 | - TOBUUndo: TToolButton; | |
64 | - TOBUSeparator4: TToolButton; | |
65 | - procedure ACTNLoadExecute(Sender: TObject); | |
66 | - procedure ACTNFontBeforeExecute(Sender: TObject); | |
67 | - procedure ACTNFontAccept(Sender: TObject); | |
68 | - private | |
69 | - { Private declarations } | |
70 | - function CurrentSelection: TTextAttributes; | |
71 | - public | |
72 | - { Public declarations } | |
73 | - class function ShowMe(AText: String): String; | |
74 | - end; | |
75 | - | |
76 | -implementation | |
77 | - | |
78 | -{$R *.dfm} | |
79 | - | |
80 | -{ TFormRTFLabelCaptionEditor } | |
81 | - | |
82 | -procedure TFormRTFLabelCaptionEditor.ACTNFontAccept(Sender: TObject); | |
83 | -begin | |
84 | - CurrentSelection.Assign(TFontEdit(Sender).Dialog.Font); | |
85 | -end; | |
86 | - | |
87 | -procedure TFormRTFLabelCaptionEditor.ACTNFontBeforeExecute(Sender: TObject); | |
88 | -begin | |
89 | - TFontEdit(Sender).Dialog.Font.Assign(CurrentSelection); | |
90 | -end; | |
91 | - | |
92 | -procedure TFormRTFLabelCaptionEditor.ACTNLoadExecute(Sender: TObject); | |
93 | -begin | |
94 | - if OPDI.Execute then | |
95 | - RIED.Lines.LoadFromFile(OPDI.FileName); | |
96 | -end; | |
97 | - | |
98 | -function EnumFontsProc(var LogFont: TLogFont; var TextMetric: TTextMetric; FontType: Integer; Data: Pointer): Integer; stdcall; | |
99 | -begin | |
100 | - TComboBox(Data).Items.Add(LogFont.lfFaceName); | |
101 | - Result := 1; | |
102 | -end; | |
103 | - | |
104 | -function TFormRTFLabelCaptionEditor.CurrentSelection: TTextAttributes; | |
105 | -begin | |
106 | - if RIED.SelLength > 0 then | |
107 | - Result := RIED.SelAttributes | |
108 | - else | |
109 | - Result := RIED.DefAttributes; | |
110 | -end; | |
111 | - | |
112 | -class function TFormRTFLabelCaptionEditor.ShowMe(AText: String): String; | |
113 | -var | |
114 | - SS: TStringStream; | |
115 | -begin | |
116 | - Result := AText; | |
117 | - | |
118 | - with Self.Create(Application) do | |
119 | - try | |
120 | - SS := TStringStream.Create(AText); | |
121 | - try | |
122 | - RIED.Lines.LoadFromStream(SS); | |
123 | - finally | |
124 | - SS.Free; | |
125 | - end; | |
126 | - | |
127 | - if ShowModal = mrOk then | |
128 | - begin | |
129 | - SS := TStringStream.Create(''); | |
130 | - try | |
131 | - RIED.Lines.SaveToStream(SS); | |
132 | - Result := SS.DataString; | |
133 | - finally | |
134 | - SS.Free; | |
135 | - end; | |
136 | - end; | |
137 | - finally | |
138 | - Free; | |
139 | - end; | |
140 | -end; | |
141 | - | |
142 | -end. |
@@ -16,7 +16,7 @@ | ||
16 | 16 | |
17 | 17 | implementation |
18 | 18 | |
19 | -uses KRK.Vcl.ExtCtrls.RTFLabel.CaptionEditor; | |
19 | +uses KRK.ToolsApi.Editors.RTFLabel.CaptionEditor; | |
20 | 20 | |
21 | 21 | { TKRKRTFLabelCaptionProperty } |
22 | 22 |