powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
13 сообщений из 38, страница 2 из 2
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829244
s62
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830goldmi45,

Пользуюсь Yandex (поддерживаю отечественного производителя), там такого не нашел

Компонент зарегистрировал в своей библиотеке
Но на форму поднять его не могу. При редактировании формы в режиме Design, куда компонент должен помещаться,
моя библиотека не видна. Но в режиме Code моя библиотека видна и компонент тоже, и при двойном клике поднимается не на форму, а в проект. Напомню, компонент создан левым способом.

Как и что подрулить

Читай например "Delphi 5. Руководство разработчика. Том 2. Разработка компонентов и работа с базами данных", стр 83-87. Про регистрацию компонента, создание пиктограммы и т.д.
https://www.for-stydents.ru/informatika/delphi/uchebniki/delphi-5-rukovodstvo-razrabotchika-tom-2-razrabotka-komponentov-i-rabota-s-bazami-dannyh.html

Или, например, справку Delphi: http://docwiki.embarcadero.com/RADStudio/Rio/en/Making_Components_Available_at_Design_Time
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829279
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830Вернемся к проблеме создания нового компонента и укладки его в Tool Palette
Объект с Panel, но без формы визуально создал (создал на форме VCL, потом удалил саму форму в коде, поправил dfm-файл)
Далее создал компонент и заложил в свою библиотеку MyLib
Что сделать, чтобы у моего компонента появилась иконка и моя библиотека прописалась в Tool Palette
Это всё слова, и ни строчки кода.
У вас ошибка в 17 строке
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829284
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830,

гугли: registercomponents delphi, иконка для компоненты delphi, информации просто тьма
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829287
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

Ну вот код (предварительный)
Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
97.
98.
99.
100.
101.
102.
103.
104.
105.
106.
107.
108.
109.
110.
111.
112.
113.
114.
115.
116.
117.
118.
119.
120.
121.
122.
123.
124.
125.
126.
127.
128.
129.
130.
131.
132.
133.
134.
135.
136.
137.
138.
139.
140.
141.
142.
143.
144.
145.
146.
147.
148.
149.
150.
151.
152.
153.
154.
155.
156.
157.
158.
159.
160.
161.
162.
163.
164.
165.
166.
167.
168.
169.
170.
171.
172.
173.
174.
175.
176.
177.
178.
179.
180.
181.
182.
183.
184.
185.
186.
187.
188.
189.
190.
191.
192.
193.
194.
195.
196.
197.
198.
199.
200.
201.
202.
203.
204.
205.
206.
207.
208.
209.
210.
211.
212.
213.
214.
215.
216.
217.
218.
219.
220.
221.
222.
223.
224.
225.
226.
227.
228.
229.
230.
231.
232.
233.
234.
235.
236.
237.
238.
239.
240.
[/SRC]
unit SmtFltr;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants,
  System.Classes,System.UITypes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.Grids, Vcl.DBGrids, Data.DB,
  Data.Win.ADODB, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Buttons, Vcl.Menus;

type
  TPanel1 = class(TPanel)
    Label1: TLabel;
    ComboBox1: TComboBox;
    Button1: TButton;
    Button2: TButton;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    BitBtn3: TBitBtn;
    BitBtn4: TBitBtn;
    Button3: TButton;
    Panel2: TPanel;
    CheckBox1: TCheckBox;
    FontDialog1: TFontDialog;
    procedure BitBtn3Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn4Click(Sender: TObject);
    procedure GridTitleClick(Column: TColumn);
    procedure Button3Click(Sender: TObject);
    procedure Button3KeyPress(Sender: TObject; var Key: Char);
    procedure Button3Exit(Sender: TObject);
    procedure ComboBox1KeyPress(Sender: TObject; var Key: Char);
    procedure ComboBox1Change(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
//procedure Register;

var
  Panel1:  TPanel1;
  GrName, FldName, FldType, Fltr, FltrAdd: string;

implementation

{$R *.dfm}
{
procedure Register;
begin
  RegisterComponents('NewLib2', [TPanel1]);
end;
}
procedure TPanel1.BitBtn1Click(Sender: TObject);
Var
  AGrid :TDBGrid;
begin
  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid;
  if Length(ComboBox1.text)>0 then
    Begin
      if AGrid.SelectedField.DataType=ftString then
        Begin
          FltrAdd:=FldName+' like %'+ComboBox1.text+'%';
        End
      else
          FltrAdd:=ComboBox1.text;
      if (CheckBox1.Checked) and (Length(Fltr)>0) then
        Fltr:=Fltr+' And '+FltrAdd
      Else
        Fltr:= FltrAdd;
      BitBtn1.Hint:='Установить фильтр '+Fltr;
      ComboBox1.Text:='';
    End;

  AGrid.DataSource.DataSet.Filter:=Fltr;
  AGrid.DataSource.DataSet.Filtered:=True;
end;

procedure TPanel1.BitBtn2Click(Sender: TObject);
Var
  AGrid :TDBGrid;
begin
  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid;
  AGrid.DataSource.DataSet.Locate(FldName, ComboBox1.Text, [loCaseInsensitive,loPartialKey]);
 end;

procedure TPanel1.BitBtn3Click(Sender: TObject);
Var I :Integer;
  AGrid :TDBGrid;
begin
  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid;
  BitBtn1.Enabled:=False;
  BitBtn2.Enabled:=False;
  BitBtn4.Enabled:=False;
  Button1.Enabled:=False;
  Button2.Enabled:=False;
  Label1.Caption:='';
  ComboBox1.Text:='';
//  ComboBox1.Clear;
  AGrid.DataSource.DataSet.Filter:='';
  AGrid.DataSource.DataSet.Filtered:=False;
  TADOStoredProc(AGrid.DataSource.DataSet).Sort:='';
  AGrid.SelectedIndex:=0;
  Panel2.Visible:=False;
  CheckBox1.Checked:=False;
  for I := 0 to AGrid.Columns.Count-1 do
    AGrid.Columns[I].Title.Font.Style:=FontDialog1.Font.Style;
  Fltr:='';
  BitBtn1.Hint:='Установить фильтр - ЗАДАЙТЕ ЗНАЧЕНИЕ';
  BitBtn2.Hint:='Найти - ЗАДАЙТЕ ЗНАЧЕНИЕ'
end;

procedure TPanel1.BitBtn4Click(Sender: TObject);
begin
  ComboBox1.Text:=FldName;
end;

procedure TPanel1.Button1Click(Sender: TObject);
Var
  AGrid :TDBGrid;
begin
  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid;
  TADOStoredProc(AGrid.DataSource.DataSet).Sort:=FldName;
end;

procedure TPanel1.Button2Click(Sender: TObject);
Var
  AGrid :TDBGrid;
begin
  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid;
  TADOStoredProc(AGrid.DataSource.DataSet).Sort:=FldName + ' DESC';
end;

procedure TPanel1.Button3Click(Sender: TObject);
Var
  AGrid :TDBGrid;
  Sm1 : Real;
begin
  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid;
  Sm1:=0.0;
  Panel2.Visible:=True;
//  DBGrid1.DataSource:= nil;
//  DBGrid2.DataSource:= nil;

  AGrid.DataSource.DataSet.First;
  Sm1:=Sm1+TADOStoredProc(AGrid.DataSource.DataSet).FieldByName(FldName).Value;
  while NOT AGrid.DataSource.DataSet.Eof do
    begin
      AGrid.DataSource.DataSet.Next;
      Sm1:=Sm1+TADOStoredProc(AGrid.DataSource.DataSet).FieldByName(FldName).Value;
    end;
  Panel2.Caption:=FloatToStrF(Sm1,ffFixed,10,3);
  AGrid.DataSource.DataSet.First;
//  DBGrid1.DataSource := DataSource1;
//  DBGrid2.DataSource := DataSource2;
end;

procedure TPanel1.Button3Exit(Sender: TObject);
begin
    if Panel2.Visible=True then
      Panel2.Visible:=False
end;

procedure TPanel1.Button3KeyPress(Sender: TObject; var Key: Char);
begin
    if Panel2.Visible=True then
      Panel2.Visible:=False
end;

procedure TPanel1.ComboBox1Change(Sender: TObject);
begin
  if (Length(Fltr)>0) Or (Length(ComboBox1.text)>0) then
    Begin
      BitBtn1.Enabled:=True;
      BitBtn2.Enabled:=True;
    End;

end;

procedure TPanel1.ComboBox1KeyPress(Sender: TObject; var Key: Char);
Var
  AGrid :TDBGrid;
begin
  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid;
  if (Key=#13) And (Length(ComboBox1.text)>0) then
    Begin
      ComboBox1.text:=Trim(ComboBox1.text);
      ComboBox1.Items.Add(Panel1.ComboBox1.Text);
      AGrid.SelectedField.Name:=FldName;
      if AGrid.SelectedField.DataType=ftString then
        Begin
          FltrAdd:=FldName+' like %'+ComboBox1.text+'%';
        End
      else
          FltrAdd:=ComboBox1.text;
      if (CheckBox1.Checked) and (Length(Fltr)>0) then
        Fltr:=Fltr+' And '+FltrAdd
      Else
        Fltr:= FltrAdd;
      BitBtn1.Hint:='Установить фильтр '+Fltr;
      (Sender As TComboBox).Text:='';
    End;
end;

procedure TPanel1.GridTitleClick(Column: TColumn);
Var
  I :Integer;
  AGrid :TDBGrid;
begin
  GrName:=Column.Grid.Name;
  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid;
  if Not CheckBox1.Checked then
    for I := 0 to AGrid.Columns.Count-1 do
       AGrid.Columns[I].Title.Font.Style:=FontDialog1.Font.Style;
  Column.Title.Font.Style:=[fsBold];
  Label1.Caption:=Column.Title.Caption;
  FldName:=Column.FieldName;
  BitBtn1.Enabled:=True;
  BitBtn2.Enabled:=True;
  BitBtn4.Enabled:=True;
  Button1.Enabled:=True;
  Button2.Enabled:=True;
  AGrid.SelectedField:=AGrid.DataSource.DataSet.FieldByName(FldName);
  if AGrid.SelectedField.DataType<>ftString then
     Begin
      Button3.Enabled:=True;
     End
  Else
     Begin
      Button3.Enabled:=False;
     End;

end;

end.
[SRC delphi]


В 17 строке ошибки нет
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829305
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830Как и что подрулить
книжки ( хоть одну - пароль - твой ник) читать не пробовал, двоечник?
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829314
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
автор AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid

что только люди не понапридумают вместо того, что бы хотя бы одну статью по компонентам прочесть.
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829374
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Это феноменально !!!
Код: pascal
1.
2.
  GrName:=Column.Grid.Name;  //берём имя грида
  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid; // и ищем его по имени



Что сделать, чтобы у моего компонента появилась иконка и моя библиотека прописалась в Tool Palette
нужно зарегистрировать свой компонент в среде.
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829911
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

Создал компонент (для этого раскомментировал строки про procedure Register)
В Палитре компонентов он появился. Помещается на форму в режиме Design двойным щелчком по компоненту, но только в виде панельки. Объекты, помещенные на панельку в исходном файле компонента, при копировании из палитры на форму не создаются.
Что я делаю не так?
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829922
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Объекты нужно создавать в конструкторе (располагать по месту и устанавливать начальные значения) и уничтожать в деструкторе.
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829924
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

Этот фрагмент кода
Код: pascal
1.
2.
3.
4.
[/SRC]
  GrName:=Column.Grid.Name;  //берём имя грида
  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid; // и ищем его по имени
[SRC delphi]


вырван из процедуры
procedure TPanel1.GridTitleClick(Column: TColumn);
Она будет вызываться на событии OnTitleClick Грида. Так программно определяется его имя.
Чем плох такой способ? А если грид создается динамически, то как еще?
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829928
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830
Код: pascal
1.
2.
  GrName:=Column.Grid.Name;  //берём имя грида
  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid; // и ищем его по имени



Чем плох такой способ? А если грид создается динамически, то как еще?

Column.Grid - вот Грид, зачем его искать следующей строкой?
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829931
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: pascal
1.
2.
3.
//  GrName:=Column.Grid.Name;  //берём имя грида
//  AGrid:=Screen.ActiveForm.FindComponent(GrName) as TDBGrid; // и ищем его по имени
  AGrid := Column.Grid as TDBGrid;
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39830094
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830,

авторЧем плох такой способ? А если грид создается динамически, то как еще?
Не стоит суп вилкой есть ) Ложкой удобнее обычно.
Посмотри, как делается в компонентах: делаешь в своей компоненте свойство 'Grid:TDBGrid' и обращаешься везде в компоненте только к нему!
Далее. Статически создаётся или динамически создаётся грид или компонента (Panel1) или всё - не имеет никакого значения. Если всё статически - то взяли и в дизайнере привязали. Если что-то или всё динамически - то динамически и привязали (после создания обоих компонент) Panel1.Grid := Grid1 Странно, правда? :)
...
Рейтинг: 0 / 0
13 сообщений из 38, страница 2 из 2
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]