Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Delphi [игнор отключен] [закрыт для гостей] / В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit / 13 сообщений из 13, страница 1 из 1
25.06.2019, 09:45
    #39830175
m830
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
Создал 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
25.06.2019, 09:53
    #39830178
black-manatee
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
m830,

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


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

Код: 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
25.06.2019, 11:35
    #39830250
makhaon
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
В пакете компонентов новый компонент типа TPanel формируется не адекватно его Unit
m830,

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

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

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

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

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


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