Forum Replies Created
-
AuthorPosts
-
pimshteinParticipantQUOTE (Torbins @ Apr 5 2010, 01:53 PM) <{POST_SNAPBACK}>Нет, кнопки всегда будут в одном и том же месте. И причем тут вообще разрешение экрана? Вот если разный DPI, тогда да, там кнопки по идее должны изменять размер и положение. Обычно это реализуют перекрывая метод ChangeScale.
Механизмы те же, что и всегда: Align, Anchors и т д.
Вопрос в связи с этим:
в примере Demo есть такая функция – ShowFrameBar (показывает или скрывает фрэйм на форме).
я там добавил такой кодRichEdit3.Width:=RichEdit3.Width-per;
и
RichEdit3.Width:=RichEdit3.Width+per;
где per принимает ширину фрэйма
но дело в том, что на разных компьютерах размеры RichEdit получаются разными…
Как по вашему мнению нужно корректно изменять размеры компонентов? Куда копать.
подскажите, пожалуйста. Может, литература какая-нибудь есть)
pimshteinParticipantQUOTE (plasticut @ Apr 5 2010, 05:46 AM) <{POST_SNAPBACK}>Немного расширю ))CODETYourFrame = class(TFrame)
private
fButton: TsSpeedButton;
public
procedure CreateButtons;
procedure DestroyButtons;
end;procedure TYourFrame.CreateButtons;
begin
sb := TSpeedButton.Create(Self); //параметр – контрол ответственный за удаление кнопки
sb.Left := 10;
sb.Top := 10;
sb.Parent := Self; //отображаем на форме
end;procedure TYourFrame.DestroyButtons;
begin
if Assigned(sb) then FreeAndNil(sb);
end;//
TMainForm.FrameBarItems0CreateFrame(Sender: TObject;
var Frame: TCustomFrame);
begin
Frame := TYourFrame.Create(Self);
end;// Создали кнопки
if Assigned(FrameBar.Items[0].Frame) then TYourFrame(FrameBar.Items[0].Frame).CreateButtons;
// Удалили кнопки
if Assigned(FrameBar.Items[0].Frame) then TYourFrame(FrameBar.Items[0].Frame).DestroyButtons;Уважаемый plasticut! У меня к Вам вопрос:
В этом коде – существует ли вероятность того, что кнопки с расположением
sb.Left := 10;
sb.Top := 10;
при разных разрешениях экрана будут находиться в разных, порой непредсказуемых местах?)
И, если да, то хотелось бы расширить вопрос и узнать Ваше мнение – как вообще, при использовании компонентов alphaskins корректно изменять размеры разнообразных компонентов. Например, если требуется их сдвиг, растяжение, уменьшение и т.д.
Спасибо.pimshteinParticipantQUOTE (plasticut @ Apr 1 2010, 09:36 AM) <{POST_SNAPBACK}>sFrameBar1.OpenItem(1, True);
Спасибо, помогло.pimshteinParticipantQUOTE (plasticut @ Mar 18 2010, 03:44 PM) <{POST_SNAPBACK}>FrameUpgrade:=TFrame1.Create(Self);
Спасибо, разобрался.
Если кому-то будет интересным, то вот статья, в которой разбирается использование параметров 'nil', 'self', 'application' при использовании конструкторов.
http://delphi.about.com/od/adptips2005/qt/nilselfapp.htmpimshteinParticipantQUOTE (Support @ Mar 18 2010, 07:17 AM) <{POST_SNAPBACK}>С событием OnDestroyFrame проблема решена?
Да, спасибо большое.
В событии OnDestroyFrame необходимо сделать следующее:
CanClose:=false; (то есть мы не хотим, чтобы фрэйм уничтожался при закрытии, как и написано у вас в справке).
Но теперь возникла другая проблема:
Допустим, создаем фрейм:
procedure Tl.sFrameBar1Items1CreateFrame(Sender: TObject;
var Frame: TCustomFrame);
begin
FrameUpgrade:=TFrame1.Create(nil);
Frame:=FrameUpgrade;
end;
FrameUpgrade объявлена как глобальная переменная.
Как мне теперь грамотно уничтожить FrameUpgrade?
При FrameUpgrade.Free вылетает Access Violation – при закрытии формы. (Если при этом CanClose:=false;). Если вообще забыть про уничтожение FrameUpgrade, то все без ошибок. Может я что-то не понимаю… Буду очень признателен, если объясните.AuthorPostsViewing 5 posts - 1 through 5 (of 5 total)