Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2007.04.29;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.48 MB
Время: 0.06 c
15-1175743774
iZEN
2007-04-05 07:29
2007.04.29
Квас Никола.


2-1175797817
..::KraN::..
2007-04-05 22:30
2007.04.29
CD-ROM


15-1175160214
DDDeN
2007-03-29 13:23
2007.04.29
Кодирование/декодирование Base64 MIME


2-1175947711
ditork
2007-04-07 16:08
2007.04.29
Динамическая память


3-1170840917
Juice
2007-02-07 12:35
2007.04.29
Поле округляется до четырех знаков





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский