powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
38 сообщений из 38, показаны все 2 страниц
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828284
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создаю свой класс на основе TPanel и хочу использовать визуальное проектирование.
Если создавать новый Unit, то в редакторе отсутствует вкладка Design и в Tool Palette нет визуальных компонент. Как их добавить?
Если создавать новую VCL форму, то то там все есть, но не ясно, как избавится от самой формы
Подскажите решение
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828289
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Зачем в Юните компоненты. Куда вы их будите кидать ?
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828343
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

На панели будут 6 кнопок, комбобокс, чекбокс и метка.
Назначение - поиск, фильтрация и сортировка по выбранному полю заданного грида.
Эта панель должна лежать на всех формах проекта где есть гриды
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828354
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторНа панели будут 6 кнопок, комбобокс, чекбокс и метка
Ну так создайте их динамически.
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828363
Valery_B
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
DimaBrНу так создайте их динамически.
Я тоже так говорил)
Мне ответили: Delphi - среда визуального программирования.
m830 нет визуальных компонент. Как их добавить?

Создай свой компонент или создать свой TFrame
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828555
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830,

компоненту свою сделай. у меня как раз компонента фильтра базы своя. удобно - кидаю где нужно.
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828570
Гаджимурадов Рустам
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon> у меня как раз компонента фильтра базы своя

С нуля сделана или на основе чьей-то?
Выложи куда-нибудь, плиз, если не жаль.
Posted via ActualForum NNTP Server 1.5
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828594
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Гаджимурадов Рустам,

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

Я так и хочу, но не понимаю, как начать ее создавать
Динамически - не катит. Форм, куда ее нужно помещать - море. Все их нужно переделывать, чтобы визуально пристроить новый компонент
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828683
Фотография roschinspb
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть вариант: сделать базовую форму на которой лежит эта самая панелька, потом все формы унаследовать от этой базовой формы. Если они унаследованы просто от TForm, то достатночно добавить юнит, заменить TForm на свою базовую форму
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828701
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Как костыль - дизайнить компонент просто как часть формы, потом все недефолтные свойства переносить в код (есть и эксперты для этого, и свою тулзу можно намутить для автоматизации). Едва ли понадобится постоянно все перелопачивать, скорее один раз раскидать контролы, потом просто подтачивать
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828705
Василий 2
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Верхний ответ был для упрощения разработки компонента.
Перечитал еще раз задачу. Есть и еще один вариант - поместить шаблон панели на "служебную" невидимую форму, и оттуда клонировать панели на каждую создаваемую форму через Stream.Read/WriteComponent.
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828708
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
И всё ради того чтобы мышкой елозить. Совсем обленились код писать !!!
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828716
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830,

авторДинамически - не катит

компоненты, как правило, создаются динамически. не вижу тут какой-то проблемы вообще.
накидай то, как ты её видишь на любой форме, хоть на новой, потом с помощью GExperts перегони в код, он это делает быстро и просто. остальное - руками.
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828722
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Демо-пример унигуя, два клика в код:

Код: 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.
var
  UniChart1: TUniChart;
  Series1: TUniLineSeries;
  Series4: TUniLineSeries;
  Series5: TUniLineSeries;
  UniChart3: TUniChart;
  Series3: TUniBarSeries;
  Series6: TUniBarSeries;
  UniButton1: TUniButton;
  UniStringGrid1: TUniStringGrid;
  UniChart2: TUniChart;
  Series2: TUniPieSeries;
  UniLabel1: TUniLabel;

  UniChart1 := TUniChart.Create(Self);
  Series1 := TUniLineSeries.Create(Self);
  Series4 := TUniLineSeries.Create(Self);
  Series5 := TUniLineSeries.Create(Self);
  UniChart3 := TUniChart.Create(Self);
  Series3 := TUniBarSeries.Create(Self);
  Series6 := TUniBarSeries.Create(Self);
  UniButton1 := TUniButton.Create(Self);
  UniStringGrid1 := TUniStringGrid.Create(Self);
  UniChart2 := TUniChart.Create(Self);
  Series2 := TUniPieSeries.Create(Self);
  UniLabel1 := TUniLabel.Create(Self);

  UniChart1.Name := 'UniChart1';
  UniChart1.Parent := Self;
  UniChart1.Left := 8;
  UniChart1.Top := 3;
  UniChart1.Width := 499;
  UniChart1.Height := 166;
  UniChart1.Hint := '';
  UniChart1.Title.Text.Clear;
  UniChart1.Title.Text.Add('Line Chart');
  UniChart1.Anchors := [akLeft, akTop, akRight];
  Series1.Name := 'Series1';
  Series1.Parent := Self;
  Series1.Title := 'Trend-1';
  Series4.Name := 'Series4';
  Series4.Parent := Self;
  Series4.Title := 'Trend-2';
  Series5.Name := 'Series5';
  Series5.Parent := Self;
  Series5.Title := 'Trend-3';
  UniChart3.Name := 'UniChart3';
  UniChart3.Parent := Self;
  UniChart3.Left := 8;
  UniChart3.Top := 175;
  UniChart3.Width := 499;
  UniChart3.Height := 187;
  UniChart3.Hint := '';
  UniChart3.Title.Text.Clear;
  UniChart3.Title.Text.Add('Bar Chart');
  UniChart3.Anchors := [akLeft, akTop, akRight];
  Series3.Name := 'Series3';
  Series3.Parent := Self;
  Series3.Title := 'Series3';
  Series6.Name := 'Series6';
  Series6.Parent := Self;
  Series6.Title := 'Series6';
  UniButton1.Name := 'UniButton1';
  UniButton1.Parent := Self;
  UniButton1.Left := 593;
  UniButton1.Top := 481;
  UniButton1.Width := 75;
  UniButton1.Height := 25;
  UniButton1.Hint := '';
  UniButton1.Caption := 'Apply';
  UniButton1.Anchors := [akRight, akBottom];
  UniButton1.ParentFont := False;
  UniButton1.TabOrder := 3;
  UniButton1.OnClick := UniButton1Click;
  UniStringGrid1.Name := 'UniStringGrid1';
  UniStringGrid1.Parent := Self;
  UniStringGrid1.Left := 513;
  UniStringGrid1.Top := 26;
  UniStringGrid1.Width := 155;
  UniStringGrid1.Height := 449;
  UniStringGrid1.Hint := '';
  UniStringGrid1.FixedCols := 0;
  UniStringGrid1.FixedRows := 0;
  UniStringGrid1.RowCount := 30;
  UniStringGrid1.ColCount := 2;
  UniStringGrid1.DefaultRowHeight := 18;
  UniStringGrid1.Options := [goFixedVertLine, goFixedHorzLine, goVertLine, goHorzLine, goRangeSelect, goEditing];
  UniStringGrid1.Columns := <>;
  UniStringGrid1.Anchors := [akTop, akRight, akBottom];
  UniStringGrid1.TabOrder := 2;
  UniStringGrid1.ParentFont := False;
  UniChart2.Name := 'UniChart2';
  UniChart2.Parent := Self;
  UniChart2.Left := 8;
  UniChart2.Top := 368;
  UniChart2.Width := 499;
  UniChart2.Height := 138;
  UniChart2.Hint := '';
  UniChart2.Title.Text.Clear;
  UniChart2.Title.Text.Add('Pie Chart');
  UniChart2.Anchors := [akLeft, akTop, akRight, akBottom];
  Series2.Name := 'Series2';
  Series2.Parent := Self;
  Series2.Colors.Clear;
  Series2.Colors.Add('#0000FF');
  Series2.Colors.Add('#00FF00');
  Series2.Colors.Add('#FF0000');
  Series2.Colors.Add('#00FFFF');
  Series2.Colors.Add('#FFFF00');
  Series2.Colors.Add('#FF00FF');
  UniLabel1.Name := 'UniLabel1';
  UniLabel1.Parent := Self;
  UniLabel1.Left := 556;
  UniLabel1.Top := 8;
  UniLabel1.Width := 61;
  UniLabel1.Height := 13;
  UniLabel1.Hint := '';
  UniLabel1.Caption := 'Chart Data';
  UniLabel1.Anchors := [akTop, akRight];
  UniLabel1.ParentFont := False;
  UniLabel1.Transparent := False;
  UniLabel1.TabOrder := 0;

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

Формы уже созданы. Для размещения на них нового компонента придется их подруливать, изменять размеры, двигать по форме. Ну как тут без мышки
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39828851
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фильтры для гридов не должны занимать места на форме.
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829006
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

Вот так, приблизительно, должен выглядеть фильтр для гридов (проект на VFP 8.0)
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829010
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Фильтр занимает много полезного места. Эргономика страдает
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829014
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Откройте свою программу на ноутбуке в 15"
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829017
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Календарь одним компонентом
2. Фильтр Грида лучше показывать по нажатию на кнопку и там же указывать признак что на грид наложен фильтр
3. Из пяти гридов на форме лишь один подписан.
4. Выравнивание никакого
В гридах много пустого пространства, при этом ещё и скролы. Что скролировать если нет данных ?
Канал доставки один ? Зачем целый грид ?
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829130
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
DimaBr,

Давай не будем спорить о дизайне форм
На вкус и цвет ...
Вернемся к проблеме создания нового компонента и укладки его в Tool Palette
Объект с Panel, но без формы визуально создал (создал на форме VCL, потом удалил саму форму в коде, поправил dfm-файл)
Далее создал компонент и заложил в свою библиотеку MyLib
Что сделать, чтобы у моего компонента появилась иконка и моя библиотека прописалась в Tool Palette
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829154
goldmi45
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830Что сделать, чтобы у моего компонента появилась иконка и моя библиотека прописалась в Tool Palette
В гугле забанили?
В юните должна быть процедура Register.
К пакету присоединить ресурсный файл dcr, в котором должен быть ресурс с именем компонента.
...
Рейтинг: 0 / 0
Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
    #39829226
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
goldmi45,

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

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

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

чем же TFrame не устроил? Там есть и "визуальное проектирование" и компонент не нужно регистрировать?
...
Рейтинг: 0 / 0
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
38 сообщений из 38, показаны все 2 страниц
Форумы / Delphi [игнор отключен] [закрыт для гостей] / Kaк добавить вкладку Design в Окно Конструктора формы Delphi XE
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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