Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.06.2009, 14:45   #11
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
По умолчанию

Цитата:
Было бы неплохо написать свой компонент(на основе PageControl и браузера) и не париться
Полностью согласен, но мне не хватит знаний...
Может научите нас..?))

Может у кого-то есть под рукой нормальные статьи как создавать свои компоненты на основе стандартных?)
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 15.06.2009, 15:07   #12
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

пожалуйста несмотрите на пример!
пример я взял с одного исходника...
все что мне хотелось бы, так это:
закрывать вкладку(при нажатииправой кнопки на любую вкладку мне надо ее закрыть)
или хотяб пока только активную закрыть
------------------
DomiNick, есть уже готовые компоненты на основе PageControl, но в них постоянно много глюков

PageExtControl - один из PageControl с кнопками...

Последний раз редактировалось Stilet; 15.06.2009 в 16:12.
beemoto вне форума Ответить с цитированием
Старый 15.06.2009, 15:35   #13
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

больше всего мне понравился код:
PageControl1.ActivePage.Free;
но глюк идет если закрыть вкладку а потом нажать левой кнопке по любой вкладке...
beemoto вне форума Ответить с цитированием
Старый 15.06.2009, 15:53   #14
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

С меня такой преподаватель....)))
Есть интересная книга "Искусство создания компонентов Delphi".
Если честно я в этом не профи, но кое что умею
Если хотите, могу скинуть исходник такого компонентика(эдинственного созданного мной )
// Сейчас попробую создать Ваш компонентик, но я ничего не обещаю)))
Изображения
Тип файла: jpg screen.jpg (4.8 Кб, 118 просмотров)

Последний раз редактировалось Levsha100; 15.06.2009 в 15:55.
Levsha100 вне форума Ответить с цитированием
Старый 15.06.2009, 16:45   #15
Kotofff
Участник клуба
 
Аватар для Kotofff
 
Регистрация: 11.01.2009
Сообщений: 1,917
По умолчанию

Цитата:
Сообщение от beemoto Посмотреть сообщение
больше всего мне понравился код:
PageControl1.ActivePage.Free;
но глюк идет если закрыть вкладку а потом нажать левой кнопке по любой вкладке...
Вот так попробуй тогда :
Код:
PageControl1.Pages[PageControl1.ActivePageIndex].Free;
Хотя никакой разницы ...
"Заряженному танку в дуло не смотрят" @Dekmer in WoT
Kotofff вне форума Ответить с цитированием
Старый 15.06.2009, 19:58   #16
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

Kotofff, такая же хрень =(
пробовал в теги try но нефига...
beemoto вне форума Ответить с цитированием
Старый 15.06.2009, 20:58   #17
beemoto
Форумчанин
 
Аватар для beemoto
 
Регистрация: 11.04.2009
Сообщений: 277
По умолчанию

Levsha100, вруби асю
beemoto вне форума Ответить с цитированием
Старый 15.06.2009, 22:54   #18
DomiNick
Студент, не
Старожил
 
Аватар для DomiNick
 
Регистрация: 29.01.2009
Сообщений: 2,067
Лампочка

Цитата:
но глюк идет если закрыть вкладку а потом нажать левой кнопке по любой вкладке...
Я писал с "Destroy"... Хотя вроде одинакого...)

А в каком это обработчике? Надеюсь это используется не одновременно с кодом из нижней половины поста #9, а то и должно вылетать...

Цитата:
Если хотите, могу скинуть исходник такого компонентика(эдинственного созданного мной )
Хотим...
I am the First of Cyber Evolution...
I am the First to Program your Future...
DomiNick вне форума Ответить с цитированием
Старый 16.06.2009, 00:18   #19
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
Смех

Создаем новый компонент на основе TPanel и вставляем этот код!)))
Код:
unit MyControlPanel;

interface

uses
 SysUtils, Classes, Controls, ExtCtrls,ComCtrls,StdCtrls ;

type
  TMyControlPanel = class(TPanel)//Основа- компонент TPanel

  private
    { Private declarations }
    slider: TTrackBar;
    Captioner: TLabel;
    Edit1: TEdit;
    Edit2: TEdit;
    Edit3: TEdit;
    slider_editining: TNotifyEvent;
    min_editining: TNotifyEvent;
    max_editining: TNotifyEvent;
     min_,max_,position_,Frequency_:integer;
    Name_:string;
    procedure SetName_(const Value: string);
    procedure SetMin_(const Value: integer);
    procedure SetMax_(const Value: integer);
    procedure SetPosition_(const Value: integer);
  protected
    { Protected declarations }
    procedure slider_Change(Sender: TObject);
    procedure Edit1_Change(Sender: TObject);
    procedure Edit2_Change(Sender: TObject);
    procedure Edit3_Change(Sender: TObject);
  public
    { Public declarations }
    constructor Create(AOwner: TComponent); override;
    destructor Destroy; override; 
  published
    { Published declarations }
    property OnSliderEdit: TNotifyEvent read slider_editining write slider_editining;
    property OnMinEdit: TNotifyEvent read min_editining write min_editining;
    property OnMaxEdit: TNotifyEvent read max_editining write max_editining;
    property Visible;
    property Min:integer read Min_ write SetMin_;
    property Max:integer read Max_ write SetMax_;
    property Name:string read Name_ write SetName_;
    property Position:integer read position_ write SetPosition_;
    property Frequency:integer read Frequency_ write Frequency_;
  end;

procedure Register;

implementation

procedure Register;
begin
  RegisterComponents('Alex', [TMyControlPanel]);
end;

{ TMyControlPanel }

constructor TMyControlPanel.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Width := 217;
  Height := 97;
  Caption:=' ';

  slider := TTrackBar.Create(Self); // Создаем TrackBar
  with slider do
  begin
   Parent:= Self;   // И устанавливаем значения по умолчанию
   left:=16;
   top :=27;
   width:=185;
   height:=45;
   min:=-10;
   max:=+10;
   position:=0;
   visible:=true;
   show;
   OnChange:=slider_Change;
  end;
  Captioner:= TLabel.Create(Self); // Создаем TLabel
  with Captioner do
  begin
   Parent:= Self;  // И устанавливаем значения по умолчанию
   left:=0;
   top :=8;
   width:=185;
   height:=15;
   AutoSize:=false;
   Alignment:=taCenter;
   visible:=true;
   Caption:=Name_;
   show;
  end;
  Edit1:= TEdit.Create(Self); // Создаем TEdit
  with Edit1 do
  begin
   Parent:= Self;  // И устанавливаем значения по умолчанию
   left:=16;
   top :=64;
   width:=58;
   height:=21;
   visible:=true;
   Text:='-10';
   show;
   OnChange:=Edit1_Change;
  end;
  Edit2:= TEdit.Create(Self); // Создаем TEdit
  with Edit2 do
  begin
   Parent:= Self; // И устанавливаем значения по умолчанию
   left:=79;
   top :=64;
   width:=58;
   height:=21;
   visible:=true;
   Text:='0';
   readOnly:=true;
   show;
   OnChange:=Edit2_Change;
  end;
  Edit3:= TEdit.Create(Self); // Создаем TEdit
  with Edit3 do
  begin
   Parent:= Self; // И устанавливаем значения по умолчанию
   left:=143;
   top :=64;
   width:=58;
   height:=21;
   visible:=true;
   Text:='10';
   show;
   OnChange:=Edit3_Change;
  end;
end;

destructor TMyControlPanel.Destroy;
begin
  slider.Free;
  Captioner.Free;
  Edit1.Free;
  Edit2.Free;    //Удаляем все созданное
  Edit3.Free;
  inherited Destroy; 
end;

procedure TMyControlPanel.Edit1_Change(Sender: TObject);
begin
   if (Edit1.Text='+')or(Edit1.Text='-')then
   begin
     //
   end        // По ходу защита от неправильного ввода))
   else
   begin
    min_:=StrToInt(Edit1.Text);
    if Assigned( OnMinEdit) then OnMinEdit(Self);
    slider.Min:=StrToInt(Edit1.Text);
   end;
end;
Levsha100 вне форума Ответить с цитированием
Старый 16.06.2009, 00:18   #20
Levsha100
Заблокирован
Старожил
 
Регистрация: 20.07.2008
Сообщений: 4,032
По умолчанию

Код:
procedure TMyControlPanel.Edit2_Change(Sender: TObject);
begin
  if (StrToInt(Edit2.Text)>=min_)and(StrToInt(Edit2.Text)<=max_) then
  begin
   slider.Position:=StrToInt(Edit2.Text);
   Position_:=StrToInt(Edit2.Text);
  end;
end;

procedure TMyControlPanel.Edit3_Change(Sender: TObject);
begin
   if (Edit3.Text='+')or(Edit3.Text='-')then
   begin
     //
   end
   else
   begin
   max_:=StrToInt(Edit3.Text);
   if Assigned( OnMaxEdit) then OnMaxEdit(Self);
   slider.Max:=StrToInt(Edit3.Text);
   end;
end;

procedure TMyControlPanel.SetMax_(const Value: integer);
begin
  slider.Max:=Value;
  Edit3.Text:=IntToStr(Value);
  Max_:=Value;
end;

procedure TMyControlPanel.SetMin_(const Value: integer);
begin
  slider.Min:=Value;
  Edit1.Text:=IntToStr(Value);
  Min_:=Value;
end;

procedure TMyControlPanel.SetName_(const Value: string);
begin
  Captioner.Caption:=Value;
  Name_:=Value;
end;

procedure TMyControlPanel.SetPosition_(const Value: integer);
begin
  slider.Position:=Value;
  Edit2.Text:=IntToStr(Value);
  position_:=Value;
end;

procedure TMyControlPanel.slider_Change(Sender: TObject);
begin
 Position_:=slider.Position;
 Edit2.Text:=IntToStr(slider.Position);
 if Assigned( OnSliderEdit) then OnSliderEdit(Self);
end;

end.
Levsha100 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Страшные Вкладки (C#/C++) Balizard Помощь студентам 1 05.05.2009 06:49
закрытие вкладки в TTabControl Shade Помощь студентам 3 06.02.2009 13:10
Вкладки в делфи7 Никита1984 Компоненты Delphi 3 09.12.2007 17:33
закрытие вкладки в TTabControl Shade Компоненты Delphi 9 19.05.2007 03:02
Вкладки Каштанка Компоненты Delphi 1 02.05.2007 11:01