@@ -5,6 +5,7 @@ interface
55uses
66 System.Classes,
77 System.SysUtils,
8+ ToolsAPI,
89 Vcl.Controls,
910 Vcl.ExtCtrls,
1011 Vcl.Forms,
@@ -35,6 +36,9 @@ TC4DWizardViewAbout = class(TForm)
3536 Panel1: TPanel;
3637 lbDonateToCode4Delphi: TLabel;
3738 imgDonate: TImage;
39+ Button1: TButton;
40+ Button2: TButton;
41+ Button3: TButton;
3842 procedure FormShow (Sender: TObject);
3943 procedure btnOKClick (Sender: TObject);
4044 procedure FormKeyDown (Sender: TObject; var Key: Word; Shift: TShiftState);
@@ -45,6 +49,9 @@ TC4DWizardViewAbout = class(TForm)
4549 procedure FormCreate (Sender: TObject);
4650 procedure btnTesteClick (Sender: TObject);
4751 procedure lbDonateToCode4DelphiClick (Sender: TObject);
52+ procedure Button1Click (Sender: TObject);
53+ procedure Button2Click (Sender: TObject);
54+ procedure Button3Click (Sender: TObject);
4855 private
4956
5057 public
@@ -122,19 +129,199 @@ procedure TC4DWizardViewAbout.lbSiteCode4DelphiMouseMove(Sender: TObject; Shift:
122129end ;
123130
124131procedure TC4DWizardViewAbout.btnTesteClick (Sender: TObject);
125- const
126- MSG = ' Carregando conteúdo.' ;
127132var
133+ LIOTAModuleServices: IOTAModuleServices;
134+ LIOTASourceEditor: IOTASourceEditor;
135+ LFileName: string;
136+ i: integer;
137+ LContFile: Integer;
128138 LMsg: string;
139+
140+ LIOTAModule: IOTAModule;
141+ LReader: IOTAEditReader;
142+ begin
143+ LIOTAModule := TC4DWizardUtilsOTA.GetCurrentModule;
144+ LFileName := ' ' ;
145+ LIOTASourceEditor := TC4DWizardUtilsOTA.GetIOTASourceEditor(LIOTAModule);
146+ if LIOTASourceEditor <> nil then
147+ LFileName := LIOTASourceEditor.FileName;
148+
149+ TC4DWizardUtils.ShowMsg(' Atual: ' + LFileName);
150+ // **
151+
152+ LIOTAModuleServices := TC4DWizardUtilsOTA.GetIOTAModuleServices;
153+ if (not Assigned(LIOTAModuleServices))then
154+ raise Exception.Create(' No Units Opened was found' );
155+
156+ mmMensagem.Lines.Clear;
157+ for i := 0 to pred(LIOTAModuleServices.ModuleCount) do
158+ begin
159+ LIOTAModule := LIOTAModuleServices.GetModule(i);
160+
161+ LIOTASourceEditor := TC4DWizardUtilsOTA.GetIOTASourceEditor(LIOTAModule);
162+ if LIOTASourceEditor <> nil then
163+ if LIOTASourceEditor.CreateReader <> nil then
164+ mmMensagem.Lines.Add(LIOTAModule.FileName);
165+
166+
167+
168+ { for LContFile := 0 to pred(LIOTAModule.GetModuleFileCount)do
169+ begin
170+ //LIOTAEditor := LIOTAModule.GetModuleFileEditor(LContFile);
171+ //if(Supports(LIOTAEditor, IOTASourceEditor, LIOTASourceEditor))then
172+ //begin
173+ // Self.ListFilesAdd(LIOTAEditor.FileName);
174+ // Break;
175+ //end;
176+ end;}
177+ end ;
178+ end ;
179+
180+ function CnOtaGetFileEditorForModule (Module : IOTAModule; Index: Integer): IOTAEditor;
129181begin
130- LMsg := ' Acesse nosso canal no ' +
131- ' YouTube e acompanhe nossos ' +
132- ' cursos: ' + sLineBreak +
133- ' @code4delphi' ;
182+ Result := nil ;
183+ if not Assigned(Module ) then
184+ Exit;
134185
135- ShowMessage(LMsg);
186+ try
187+ { $IFDEF BCB5}
188+ if IsCpp(Module .FileName) and (Module .GetModuleFileCount = 2 ) and (Index = 1 ) then
189+ Index := 2 ;
190+ { $ENDIF}
191+ Result := Module .GetModuleFileEditor(Index);
192+ except
193+ Result := nil ;
194+ end ;
195+ end ;
136196
137- ShowMessage(MSG + ' Aguarde...' );
197+ function CnOtaIsFileOpen (const FileName: string): Boolean;
198+ var
199+ ModuleServices: IOTAModuleServices;
200+ Module : IOTAModule;
201+ FileEditor: IOTAEditor;
202+ I: Integer;
203+ begin
204+ Result := False;
205+
206+ ModuleServices := BorlandIDEServices as IOTAModuleServices;
207+ if ModuleServices = nil then
208+ Exit;
209+
210+ Module := ModuleServices.FindModule(FileName);
211+ if Assigned(Module ) then
212+ begin
213+ for I := 0 to Module .GetModuleFileCount-1 do
214+ begin
215+ FileEditor := CnOtaGetFileEditorForModule(Module , I);
216+ Assert(Assigned(FileEditor));
217+
218+ Result := CompareText(FileName, FileEditor.FileName) = 0 ;
219+ if Result then
220+ Exit;
221+ end ;
222+ end ;
223+ end ;
224+
225+ procedure TC4DWizardViewAbout.Button1Click (Sender: TObject);
226+ var
227+ LIOTAModuleServices: IOTAModuleServices;
228+ I: Integer;
229+ LIOTAModule: IOTAModule;
230+ LIOTAEditor: IOTAEditor;
231+ begin
232+ mmMensagem.Lines.Clear;
233+
234+ LIOTAModuleServices := BorlandIDEServices as IOTAModuleServices;
235+ for I := 0 to LIOTAModuleServices.ModuleCount - 1 do
236+ begin
237+ LIOTAModule := LIOTAModuleServices.Modules[I];
238+ LIOTAEditor := LIOTAModule.CurrentEditor;
239+ if LIOTAEditor = nil then
240+ Continue;
241+
242+ if not CnOtaIsFileOpen(LIOTAModule.FileName) then
243+ Continue;
244+
245+ if not TC4DWizardUtilsOTA.FileIsOpenInIDE(LIOTAModule.FileName) then
246+ Continue;
247+
248+ mmMensagem.Lines.Add(LIOTAModule.FileName);
249+ end ;
250+ end ;
251+
252+ procedure TC4DWizardViewAbout.Button2Click (Sender: TObject);
253+ var
254+ LIOTAModuleServices: IOTAModuleServices;
255+ LIOTAModule: IOTAModule;
256+ LIOTAEditor: IOTAEditor;
257+ i: Integer;
258+ LIOTASourceEditor: IOTASourceEditor;
259+ LIOTAEditView: IOTAEditView;
260+ begin
261+ mmMensagem.Lines.Clear;
262+
263+ LIOTAModuleServices := BorlandIDEServices as IOTAModuleServices;
264+
265+ for i := 0 to Pred(LIOTAModuleServices.ModuleCount) do
266+ begin
267+ LIOTAModule := LIOTAModuleServices.Modules[i];
268+
269+ mmMensagem.Lines.Add(LIOTAModule.FileName +
270+ ' / ' + LIOTAModule.OwnerCount.ToString + ' / ' + LIOTAModule.OwnerModuleCount.ToString +
271+ ' / ' + LIOTAModule.HasCoClasses.ToString(TUseBoolStrs.True) +
272+ ' / ' + LIOTAModule.ModuleFileCount.ToString +
273+ ' / ' + LIOTAModule.FileSystem);
274+
275+
276+ LIOTAEditor := LIOTAModule.CurrentEditor;
277+
278+ LIOTASourceEditor := TC4DWizardUtilsOTA.GetIOTASourceEditor(LIOTAModule);
279+ if (LIOTASourceEditor <> nil )then
280+ begin
281+ mmMensagem.Lines.Add(' - LIOTASourceEditor: ' + LIOTASourceEditor.GetSubViewCount.ToString +
282+ ' / A: ' + LIOTASourceEditor.GetSubViewIndex.ToString +
283+ ' / B: ' + LIOTASourceEditor.GetLinesInBuffer.ToString +
284+ ' / C: ' + LIOTASourceEditor.EditViewCount.ToString);
285+
286+
287+ LIOTAEditView := TC4DWizardUtilsOTA.GetIOTAEditView(LIOTASourceEditor);
288+ end ;
289+
290+
291+
292+
293+ { if LIOTAModule.OwnerCount > 0 then
294+ mmMensagem.Lines.Add(' - Owners: ' + LIOTAModule.Owners[0].FileName);
295+
296+ if LIOTAModule.OwnerModuleCount > 0 then
297+ mmMensagem.Lines.Add(' - Owners: ' + LIOTAModule.OwnerModules[0].FileName);}
298+
299+ end ;
300+ end ;
301+
302+ procedure TC4DWizardViewAbout.Button3Click (Sender: TObject);
303+ var
304+ LIOTAModuleServices: IOTAModuleServices;
305+ LIOTAModule: IOTAModule;
306+ LIOTASourceEditor: IOTASourceEditor;
307+ i: Integer;
308+ begin
309+ mmMensagem.Lines.Clear;
310+
311+ LIOTAModuleServices := BorlandIDEServices as IOTAModuleServices;
312+ for i := 0 to Pred(LIOTAModuleServices.ModuleCount) do
313+ begin
314+ LIOTAModule := LIOTAModuleServices.Modules[i];
315+
316+ LIOTASourceEditor := TC4DWizardUtilsOTA.GetIOTASourceEditor(LIOTAModule);
317+ if (LIOTASourceEditor = nil )then
318+ Continue;
319+
320+ if LIOTASourceEditor.EditViewCount <= 0 then
321+ Continue;
322+
323+ mmMensagem.Lines.Add(LIOTAModule.FileName + ' / C: ' + LIOTASourceEditor.EditViewCount.ToString);
324+ end ;
138325end ;
139326
140327end .
0 commit comments