powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Delphi [игнор отключен] [закрыт для гостей] / В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
13 сообщений из 13, страница 1 из 1
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39830175
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Создал Unit с новым компонентом типа TPanel с положенными на него объектами

Код: 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.
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,Vcl.DBCtrls;

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('New7', [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);
...

end.



Вставляю его в существующий пакет New7 в главном меню Delphi XE3 --> Component --> Install Component ...
Компонент успешно добавляется в пакет. Пакет вместе с компонентом виден в Tool Palette.
Далее выбираю форму, куда хочу добавить новый компонент, выбираю Design закладку редактора, дважды кликаю по новому компоненту в Tool Palette и на форме появляется новый объект, состоящий ТОЛЬКО из одной панельки.
Что пошло не так?
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39830178
black-manatee
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m830,

Ваши кнопки - это просто переменные в классе. Если хотите, чтобы они показались на панели, Вы должны в конструкторе Вашей панели создать эти кнопки, и присвоить их Parent-у панель.


В любом случае, m830, поверьте, Вам не нужен новый компонент. Ну вот просто поверьте. Используйте фреймы.
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39830183
aford
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
m830, можно еще шаблон панели сделать, бросаешь на нее компоненты и Component -> Create Component Template , он потом появится в панели инструментов.
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39830193
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что не понятно в этом ответе ?
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39830202
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вместо того, чтобы написать функцию, которая будет создавать выпадающее окно с фильтом и вызывать её на клике по гриду, вы занимаетесь изобретением компонентов, ничего не смысля в компонентостроении

Код: pascal
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
function ShowFilter(Grid: TDBGrid): boolean;
var F: TFilterForm;
begin
  with TFilterForm.Create(Application) do
  try
    Result := ShowModal = 1
  finally
    Free;
  end;
end;


procedure TForm1.GridTitleClick(Column: TColumn);
begin
  ShowFilter(Column.Grid);
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39830250
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830,

повторюсь. посмотри статьи. вот, специально нашел твой случай:
https://compress.ru/article.aspx?id=9739
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39830526
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaon,

ему бесплатно полные буквари выкладывают, а ты, Дим, какие-то отрывочные статейки суешь, в которых разберется только сведущий человек :)
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39830617
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

там как раз то, что ему нужно :)
авторРеализуем конструктор в секции реализации:
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39830718
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Когда ТС узнает что компоненты по панельке нельзя двигать мышкой, то это будет шок
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39830731
Фотография Док
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
makhaonтам как раз то, что ему нужно :)
он базовых понятий не имеет, а ты ему статейки, что и куда написать, чтоб взлетело. Потому у ТС и получается что-то вроде этого
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39830806
Фотография makhaon
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Док,

я ему почти готовый код )
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39831180
m830
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Так на старттопик так никто и не ответил
Переделал на фрейм, работает, и даже удобнее, чем в VFP.
Но остались другие вопросы, которые постепенно всплывают.
Один из них сегодня опубликовал. Такого в VFP категорически нет, хотя и там своих тараканов хватает
Но главный так и не решен
Как развязать детку Grid и его родителя.
GridPrnt.DataSource.Enabled спасает частично. Визуально Grid-ы не шевелятся, но AfterScroll на родительском Grid (записи скроллируются без графического отображения) запускает процедуру детку, что тормозит
...
Рейтинг: 0 / 0
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
    #39831396
DimaBr
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
m830Так на старттопик так никто и не ответил
ВОТ ОТВЕТ

m830Как развязать детку Grid и его родителя.
GridPrnt.DataSource.Enabled спасает частично. Визуально Grid-ы не шевелятся, но AfterScroll на родительском Grid (записи скроллируются без графического отображения) запускает процедуру детку, что тормозит
Не завязывайте, тогда не придётся развязывать.
Самое главное научитесь задавать вопросы. Из того что написано, лично я ничего не понял. Причём тут "AfterScroll на родительском" гриде ?
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / Delphi [игнор отключен] [закрыт для гостей] / В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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