![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Раздвижная форма [D7]
Roman_S © (2007-04-09 16:02:00)Написал следующий код:
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-12 18:20:00) [1]Глюки продолжаются!
Единственное, что удалось выяснить, - происходит только на некоторых Win2000. Размер шрифта во всех виндах стандартный.
Такое ощущение, что не устанавливается фиксированный размер формы, а просто происходит сложение/вычитание конкретного числа!
{RASkov} (2007-04-09 17:27:00) [2]> bsSingle!
При таком раскладе Винда не должна менять размер формы(это в отличии от bsSizeToolWin)... может у тебя какие скиновые компоненты рулят.... или фик его знает. Сомневаюсь я, что размер прыгает, как ты это описал в [10-11] - Проверь, на разных машинах, где размеры меняются
ShowMessage(IntToStr(ClientHeight));
Возможно компоненты с AutoSize=True - чего шалят. Здесь может зависить от настроек Winды - шрифт: крупный/обычный, например... но это не должно сказываться на размер формы, у которой AutoSize=False и BorderStyle=bsSingle..
Roman_S (2007-04-09 17:08:00) [3]bsSingle!
Roman_S (2007-04-09 17:07:00) [4]Да, спасибо!
Была одна проблема с ?????? вместо ПРИВЕТ (оказалось проблемы с Delphi 7 на англоязычных виндах) Ну хоть понятно было в чём дело и как решить!
А тут чётко написаны размеры...
Каккие настройки WinXP могут влиять на это?
{RASkov} (2007-04-09 17:06:00) [5]> [11] Roman_S © (09.04.07 17:03)
А BorderStyle у этой формы какой?
{RASkov} (2007-04-09 17:03:00) [6]> [10] Roman_S © (09.04.07 16:59)
> было так, вот только на нескольких даже сразу было видно
> невооружённым взглядом, что форма запускалась не = 301,
> а ~295 (чуть-чуть ниже),
Странно все это... ну попробуй еще и это:
procedure <TForm>.FormCreate(Sender: TObject);
begin
Panel1.Top := ClientHeight-Panel1.Height;
end;
Мысль думаю понял?
Roman_S (2007-04-09 17:03:00) [7]Вроде чётно прописано:
ClientHeight:=500
Вот почему на каких-то глюкнутых компах, она не разворачивается до конца, и начинается.....!?
295 (вместо 301) --> 450 (вместо 500) --> 250 (вместо 301)
Roman_S (2007-04-09 16:59:00) [8]Спасибо, {RASkov}!
Но по-поводу самого вопроса: размер формы нельзя изменить, за исключением клика по панели (разворачиваем = 500, сворачиваем - высота = 301) С моим кодом ПОЧТИ везде было так, вот только на нескольких даже сразу было видно невооружённым взглядом, что форма запускалась не = 301, а ~295 (чуть-чуть ниже), затем начиналось: разворачиваем ~450, сворачиваем ~250. Врезультате панель (по которой надо кликать) пропадала с экрана, и ничего не остаётся как закрыть программу!
{RASkov} (2007-04-09 16:55:00) [9]А если чесно, то я не понял, что это значит:
> Всё бы хорошо, но на некоторых компьютерах форма НЕ раздвигается, а складывается???!
{RASkov} (2007-04-09 16:51:00) [10]> форма изначально свернута, у панели свойство Tag=0, ClientHeght=301....
И в дизайнере у панели Caption = 'Show'...
{RASkov} (2007-04-09 16:50:00) [11]> [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....
Roman_S (2007-04-09 16:38:00) [12]Это как с кнопкой:
- до запуска таймера, надпись на кнопке "Пуск" (ЭТО НЕЗНАЧИТ, ЧТО ОН ЗАПУЩЕН!)
- жмём на кнопку, запускается таймер, и надпись на кнопке меняется на "Стоп" (ЭТО НЕ ЗНАЧИТ, ЧТО ТАЙМЕР ОСТАНОВЛЕН! ЭТО ЗНАЧИТ, ЧТО НАЖАТИЕМ НА ЭТУ КНОПКУ МОЖНО ОСТАНОВИТЬ ТАЙМЕР!)
То-же самое с моей программой "Show" - это показать, а не показана!
Roman_S (2007-04-09 16:31:00) [13]Рисую схему:
1. Форма скрыта: ClientHeight:=301
| |
|________|
| Show_|
2. Кликаем по надписи Show (Показать):
| |
|________|
| Hide_|
| |
|________| ClientHeight становится :=500 ,
3. Кликаем по надписи Hide (свернуть/скрыть):
| |
|________|
| Show_| ClientHeight становится :=301 ,
tesseract (2007-04-09 16:24:00) [14]
> else begin
Если заголовок не "Show" - форма сворачиваеться - неужто невидно? А шанс, что он будет не show есть.
Roman_S (2007-04-09 16:16:00) [15]Поясню:
'Show' - "Показать" (форма в свёрнутом состоянии)
'Hide' - "Скрыть" (при клике по Panel1, если её Caption ='Show' (т.е. форма была свёрнутой), она разворачивается и её Caption меняется на 'Hide' - т.е. свертуть обратно)
Практическина всех компьютерах всё работает как задумано, но...
ПОДСКАЖИТЕ!
tesseract (2007-04-09 16:08:00) [16]
> Всё бы хорошо, но на некоторых компьютерах форма НЕ раздвигается
> а складывается???!Что не так? Как исправить?
Задать Caption как Hide при созданиии панели. Видно же что баг в условии.
Roman_S (2007-04-09 16:04:00) [17]Извиняюсь, код такй:
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;