Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> TMainMenu в несколько столбцов 
:(
    Опции темы
-Сергей-
  Дата 10.9.2003, 15:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 2.8.2003
Где: Россия

Репутация: нет
Всего: 1



Если содержимое столбика меню не влазеет на экран, то появл-ся
стрелка и начинаешь прокручивать это меню дальше.
Как сделать так, чтобы эта стрелка не появлялась, а вместо неё добавлялся ещё один столбец, не влезает, то ещё один...
С учетом разрешения экрана.
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
Vex
Дата 10.9.2003, 18:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Свойство Break.


--------------------
Слава Україні.
PM   Вверх
-Сергей-
Дата 11.9.2003, 12:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 224
Регистрация: 2.8.2003
Где: Россия

Репутация: нет
Всего: 1



Да я знаю, что Break! Мне нужно вот что: допустим что у меня приложение поддерживает скины, они считаются из опред. папки. По мере их добавления в папку увеличивается и список в меню верно?
Так вот, если он не влазеет в экран как мне сделать этот Break во время работы программы? Если сделать Break в определенном месте, то получится не то что надо.
--------------------
Для утвердительного ответа достаточно лишь одного слова - "да". Все прочие слова придуманы, чтобы сказать "нет".
PM MAIL WWW ICQ MSN   Вверх
Vex
Дата 11.9.2003, 13:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Попробуй это, хотя писал без компилера и за работоспособность кода не ручаюсь.

Код

for i:=1 to PunktMenu.Count do begin
  if i mod 10 {предел пунктов, когда меню разделяется на два} = 0 then
  PunktMenu.Items[i/2].Break:=mbBreak;
end;



--------------------
Слава Україні.
PM   Вверх
p0s0l
Дата 11.9.2003, 15:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 58
Всего: 112



Можешь попробовать так (примерно как варинат Vex'а):
MenuItem1 - тот итем, в котором находится список скинов, на OnClick повесь:
Код
procedure TForm1.MenuItem1Click(Sender: TObject);
var
 d, i, ItemHeight : integer;
 mi, item1 : TMenuItem;
 ncm : NONCLIENTMETRICS;
begin
 ncm.cbSize := SizeOf (ncm);
 SystemParametersInfo (SPI_GETNONCLIENTMETRICS, SizeOf(ncm), @ncm, 0);
 ItemHeight := ncm.iMenuHeight;
 d := Screen.Height div ItemHeight;
 mi := Sender as TMenuItem;
 for i := 0 to mi.Count-1 do
 begin
   item1 := mi.Items[i];
   if (i mod d) = 0 then
     item1.Break := mbBreak
   else
     item1.Break := mbNone;
 end;
end;


Это сообщение отредактировал(а) p0s0l - 11.9.2003, 15:09


--------------------
С уважением, г-н Посол.
PM   Вверх
Vex
Дата 11.9.2003, 15:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


кацапосрачмученiкъ
****


Профиль
Группа: Экс. модератор
Сообщений: 3103
Регистрация: 28.3.2002
Где: strawberry fields

Репутация: 1
Всего: 88



Вот еще один код, при нажатии на кнопку добавляются пункты меню, и если их много (в данном случае 4) делятся на столбцы.

Код

unit Unit1;

interface

uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls, Menus;

type
 TForm1 = class(TForm)
   Button1: TButton;
   MainMenu1: TMainMenu;
   test11: TMenuItem; {пункт главного меню}
   k11: TMenuItem;  {Первый подпункт первого пункта меню}
   procedure Button1Click(Sender: TObject);
   procedure FormCreate(Sender: TObject);
 private
   { Private declarations }
 public
   { Public declarations }
 end;

var
 Form1: TForm1;
 k:integer;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
var
i:integer;
AItems:array of TMenuItem;
begin
SetLength(AItems,k+1);
AItems[k]:=TMenuItem.Create(test11);
AItems[k].Caption:=IntToStr(k);
if k mod 4 = 0 then AItems[k].Break:=mbBarBreak;   {Деление на колонки}
test11.Add(AItems[k]); {Здесь добавляются подпункты меню в первый пункт меню}
inc(k);
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
k:=1;
end;

end.






--------------------
Слава Україні.
PM   Вверх
Unregistered
Дата 18.9.2003, 16:40 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Спасибо! То что надо!
  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.1375 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.