Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2007.04.29;
Скачать: CL | DM;

Вниз

Раздвижная форма   Найти похожие ветки 

 
Roman_S ©   (2007-04-09 16:02) [0]

Написал следующий код:
procedure TForm1.PanelKluchClick(Sender: TObject);
begin
if Panel1.Caption ="Show"
then begin
 ClientHeight:=500;
 Panel1.Caption := "Hide";
end
else begin
 ClientHeight:=301;
 Panel1.Caption := "Show";
end;
end;

При клике по панели, форма должна раздвигаться.
Всё бы хорошо, но на некоторых компьютерах форма НЕ раздвигается а складывается???!
Что не так? Как исправить?


 
Roman_S ©   (2007-04-09 16:04) [1]

Извиняюсь, код такй:
procedure TForm1.Panel1Click(Sender: TObject);
begin
if Panel1.Caption ="Show"
then begin
ClientHeight:=500;
Panel1.Caption := "Hide";
end
else begin
ClientHeight:=301;
Panel1.Caption := "Show";
end;
end;


 
tesseract ©   (2007-04-09 16:08) [2]


> Всё бы хорошо, но на некоторых компьютерах форма НЕ раздвигается
> а складывается???!Что не так? Как исправить?


Задать Caption как Hide при созданиии панели. Видно же что баг в условии.


 
Roman_S ©   (2007-04-09 16:16) [3]

Поясню:
"Show" - "Показать" (форма в свёрнутом состоянии)
"Hide" - "Скрыть" (при клике по Panel1, если её Caption ="Show" (т.е. форма была свёрнутой), она разворачивается и её Caption меняется на "Hide" - т.е. свертуть обратно)

Практически на всех компьютерах всё работает как задумано, но...
ПОДСКАЖИТЕ!


 
tesseract ©   (2007-04-09 16:24) [4]


> else begin


Если заголовок не "Show" - форма сворачиваеться - неужто невидно? А шанс, что он будет не show есть.


 
Roman_S ©   (2007-04-09 16:31) [5]

Рисую схему:
1. Форма скрыта:  ClientHeight:=301
|             |
|________|
|Show_|
2. Кликаем по надписи Show (Показать):
|             |
|________|
|Hide_|
|             |
|________|      ClientHeight становится :=500 ,          
3. Кликаем по надписи Hide (свернуть/скрыть):
|             |
|________|
|Show_|     ClientHeight становится :=301 ,


 
Roman_S ©   (2007-04-09 16:38) [6]

Это как с кнопкой:
- до запуска таймера, надпись на кнопке "Пуск" (ЭТО НЕ ЗНАЧИТ, ЧТО ОН ЗАПУЩЕН!)
- жмём на кнопку, запускается таймер, и надпись на кнопке меняется на "Стоп" (ЭТО НЕ  ЗНАЧИТ, ЧТО ТАЙМЕР ОСТАНОВЛЕН! ЭТО ЗНАЧИТ, ЧТО НАЖАТИЕМ НА ЭТУ КНОПКУ МОЖНО ОСТАНОВИТЬ ТАЙМЕР!)

То-же самое с моей программой "Show" - это показать, а не показана!


 
{RASkov}   (2007-04-09 16:50) [7]

> [5] Roman_S ©   (09.04.07 16:31)

Сделай через Тэг:

procedure TForm1.Panel1Click(Sender: TObject);
const PnCapt: array [Boolean] of String = ("Show", "Hide");
     FrmHght: array [Boolean] of Integer = (301, 500);
begin
 Panel1.Tag := not Panel1.Tag;
 Panel1.Caption := PnCapt[Panel1.Tag<>0];
 ClientHeight := FrmHght[Panel1.Tag<>0];
end;


Подразумевается, что: форма изначально свернута, у панели свойство Tag=0, ClientHeght=301....


 
{RASkov}   (2007-04-09 16:51) [8]

> форма изначально свернута, у панели свойство Tag=0, ClientHeght=301....

И в дизайнере у панели Caption = "Show"...


 
{RASkov}   (2007-04-09 16:55) [9]

А если чесно, то я не понял, что это значит:
> Всё бы хорошо, но на некоторых компьютерах форма НЕ раздвигается, а складывается???!


 
Roman_S ©   (2007-04-09 16:59) [10]

Спасибо, {RASkov}!
Но по-поводу самого вопроса: размер формы нельзя изменить, за исключением клика по панели (разворачиваем = 500, сворачиваем - высота = 301) С моим кодом ПОЧТИ везде было так,  вот только на нескольких даже сразу было видно невооружённым взглядом, что форма запускалась не = 301, а ~295 (чуть-чуть ниже), затем начиналось: разворачиваем ~450, сворачиваем ~250. Врезультате панель (по которой надо кликать) пропадала с экрана, и ничего не остаётся как закрыть программу!


 
Roman_S ©   (2007-04-09 17:03) [11]

Вроде чётно прописано:
ClientHeight:=500
Вот почему на каких-то глюкнутых компах, она не разворачивается до конца, и начинается.....!?

295 (вместо 301) --> 450 (вместо 500) --> 250 (вместо 301)


 
{RASkov}   (2007-04-09 17:03) [12]

> [10] Roman_S ©   (09.04.07 16:59)
> было так,  вот только на нескольких даже сразу было видно
> невооружённым взглядом, что форма запускалась не = 301,
> а ~295 (чуть-чуть ниже),

Странно все это... ну попробуй еще и это:
procedure <TForm>.FormCreate(Sender: TObject);
begin
 Panel1.Top := ClientHeight-Panel1.Height;
end;

Мысль думаю понял?


 
{RASkov}   (2007-04-09 17:06) [13]

> [11] Roman_S ©   (09.04.07 17:03)

А BorderStyle у этой формы какой?


 
Roman_S ©   (2007-04-09 17:07) [14]

Да, спасибо!
Была одна проблема с ?????? вместо ПРИВЕТ (оказалось проблемы с Delphi 7 на англоязычных виндах) Ну хоть понятно было в чём дело и как решить!

А тут чётко написаны размеры...
Каккие настройки WinXP могут влиять на это?


 
Roman_S ©   (2007-04-09 17:08) [15]

bsSingle!


 
{RASkov}   (2007-04-09 17:27) [16]

> bsSingle!

При таком раскладе Винда не должна менять размер формы(это в отличии от bsSizeToolWin)... может у тебя какие скиновые компоненты рулят.... или фик его знает. Сомневаюсь я, что размер прыгает, как ты это описал в [10-11] - Проверь, на разных машинах, где размеры меняются
ShowMessage(IntToStr(ClientHeight));
Возможно компоненты с AutoSize=True - чего шалят. Здесь может зависить от настроек Winды - шрифт: крупный/обычный, например... но это не должно сказываться на размер формы, у которой AutoSize=False и BorderStyle=bsSingle..


 
Roman_S ©   (2007-04-12 18:20) [17]

Глюки продолжаются!
Единственное, что удалось выяснить, - происходит только на некоторых Win2000. Размер шрифта во всех виндах стандартный.

Такое ощущение, что не устанавливается фиксированный размер формы, а просто происходит сложение/вычитание конкретного числа!



Страницы: 1 вся ветка

Текущий архив: 2007.04.29;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.049 c
2-1176116047
Steep
2007-04-09 14:54
2007.04.29
Че-то совсем туплю..


4-1165068114
leonidus
2006-12-02 17:01
2007.04.29
Некорректное извлечение иконки из ресурса


3-1171346681
korden
2007-02-13 09:04
2007.04.29
Добавление поля в существующий dbf


3-1170920919
iviom
2007-02-08 10:48
2007.04.29
ComboBox в DBGridEh


15-1175817678
trigle
2007-04-06 04:01
2007.04.29
Существуют ли