Форум: "Начинающим";
Текущий архив: 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.041 c