Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 23.03.2014, 12:13
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию Панелька для ярлыков

Ребят есть идея но не могу её реализовать в связи с нехваткой знаний .
Нужно сделать что то похожее на TabSet для его реализации я решил использовать панельки на данном этапе моя форма выглядит так метка 1.

Так вот на метке 3 видно что панели добавляются в начало панели а нужно в конец и нужно чтоб панели растягивались по всей длине как на метки 3.

вот мои наброски
Вложения
Тип файла: rar Нижняя панель 2.rar (2.19 Мбайт, 36 просмотров)
Ответить с цитированием
  #2  
Старый 23.03.2014, 12:16
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

Вот как сейчас
Изображения
Тип файла: jpg 1570281.jpg (51.4 Кбайт, 36 просмотров)
Ответить с цитированием
  #3  
Старый 23.03.2014, 12:35
Аватар для NumLock
NumLock NumLock вне форума
Let Me Show You
 
Регистрация: 30.04.2010
Адрес: Северодвинск
Сообщения: 5,426
Версия Delphi: 7, XE5
Репутация: 59586
По умолчанию

Код:
property Align;
__________________
Пишу программы за еду.
__________________
Ответить с цитированием
  #4  
Старый 23.03.2014, 12:52
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

конкретней можно

Вот сам код кому неохота качать
Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.StdCtrls, Vcl.Buttons;

type
  TForm1 = class(TForm)
    Panel3: TPanel;
    ListBox1: TListBox;
    Panel4: TPanel;
    Panel1: TPanel;
    Panel2: TPanel;
    SpeedButton1: TSpeedButton;
    SpeedButton2: TSpeedButton;
    SpeedButton3: TSpeedButton;
    procedure FormCreate(Sender: TObject);
    procedure SpeedButton3Click(Sender: TObject);
    procedure PClick(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;
  i,j,l: Byte ;
  w,h: Integer;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
 Form1.Left:=10;
 Form1.Width:= Screen.WorkAreaWidth - 20 ;
 Form1.top:= Screen.WorkAreaHeight - Form1.Height;
 end;

procedure TForm1.PClick(Sender: TObject);
begin
 //ShowMessage('Нажата'+ (sender as TPanel).Caption);
 for i:=0 to Panel1.ControlCount-1 do
  if (Panel1.Controls[i] is TPanel) then  // and (Panel4.Controls[i] <> Sender) and (Pos('Pages',TPanel(Panel4.Controls[i]).Caption) = 1)
  begin
   TPanel(Panel1.Controls[i]).Color:=clSilver;
  (sender as TPanel).Color:= clLime;
  end;
end;

procedure TForm1.SpeedButton3Click(Sender: TObject);
var
 Pages: array [0..20] of TPanel;
begin
 Pages[i]:= TPanel.Create(Self);
    with Pages[i] do
     begin
      Parent:=Panel1;
      Align:=alLeft;
      AlignWithMargins:=True;
      //Left:=3;
     // top:=3;
     // Width:= Panel1.Width - 6;
     // Height:= Panel1.Height - 6;
      Color:=clSilver; // цвет панели
      Name:='Pages'+inttostr(i); //
      Caption:='Pages'+inttostr(i);
      Font.Size:=9;  // размер шрифта
      Font.Style:=[fsbold];  // жирный шрифт
      OnClick:=PClick;    // клик для панели
      ParentBackground:=False; // для окраски панели
      ListBox1.Items.Add(Pages[i].Name);

     end;

 For j := 0 to ListBox1.Items.Count-1 do
  begin
   //TPanel(ListBox1.Items[j].s      ListBox1[j]).SetBounds(l, 0, w, h);
   Inc(l, w);
  end;

 Inc(i);
end;

end.

Последний раз редактировалось M.A.D.M.A.N., 23.03.2014 в 13:04.
Ответить с цитированием
  #5  
Старый 23.03.2014, 14:16
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от Gudzik11
Код:
.....
procedure TForm1.SpeedButton3Click(Sender: TObject);
var
 Pages: array [0..20] of TPanel;
begin
 Pages[i]:= TPanel.Create(Self);
    with Pages[i] do
     begin
      Parent:=Panel1;
      Align:=alLeft;
      AlignWithMargins:=True;
.....
Вот здесь, перед присвоением свойству Align значения alLeft сделай так:
Код:
Left := Panel1.Width;
тогда панельки будут добавляться справа, а не слева.

А у тебя что, массив Pages локальный? И ты думаешь в нём будут храниться все созданные панельки?

А вот чтобы панельки растягивались на всю родительскую панель, то здесь Align уже не поможет. Нужно самому рассчитывать размеры всех панелек и по событию TForm1.Panel1Resize заново их пересчитывать.
Ответить с цитированием
  #6  
Старый 23.03.2014, 16:58
Gudzik11 Gudzik11 вне форума
Начинающий
 
Регистрация: 27.09.2011
Сообщения: 158
Репутация: 10
По умолчанию

спасибо left работает на счёт пересчета всех панелей
думаю нужно вести какой то учёт панелей к примеру LIstBox а при добавлении панели нужно перебрать имеющиеся и разделить всё вот тут и загвоздка

Код:
 for i:=0 to Panel1.ControlCount-1 do
  if (Panel1.Controls[i] is TPanel) then
  begin

  end;
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра
Комбинированный вид Комбинированный вид

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 00:11.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025