BorderStyle.bsNone a maximalizace – Delphi – Fórum – Programujte.com
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu
Reklama
Reklama

BorderStyle.bsNone a maximalizace – Delphi – Fórum – Programujte.comBorderStyle.bsNone a maximalizace – Delphi – Fórum – Programujte.com

 

Toto vlákno bylo označeno za vyřešené — příspěvek s řešením.
Hledá se programátor! Plat 1 800 € + bonusy (firma Boxmol.com)
dyžon0
Stálý člen
2. 9. 2012   #1
-
0
-

zdarvim vsechny,

mam takovej problem, teda spis se chci zeptat na jiny reseni. Nejdriv vsechno popisu:

Mam pruhledny formular s BorderStyle.bsNone a na nem mam 10 panelu, ktery prepinam pomoci SpeedButonu, na kazdym panelu je neco jineho, na 1. treba databazi, na 2. prohlizeni fotek, na 10. info o aplikaci a podobne.

No a ted mi nastal problem s maximalizaci.  Protoze mam formular bez okraju a jeste navic pruhlednej, jsou na nem videt jako podklad prave ty panely.
Neresil jsem to teda maximalizaci formulare, coz by mi asi nepomohlo,ale tim, ze jsem vsechny panely na stisk tlacitka zvetsil a komponenty na nem posunul ...  (teda jen nektery, hlavne ty co neco zobrazuji / memo,DBGrid a tlacitka mezi nima/)

je z toho ale strasnej paskvil, code vlozim pod text, navic nemam vyresenou velikost monitoru,ale pocitam, ze na 15" uz nikdo nedela a na 17" by se to melo vejit i zvetseny.

Tady je ten code:  snesu vysmech,ale jestli znate nekdo nejaky rozumnejsi reseni,tak prosim poradte,tohle je hodne amaterska prace.

na zmenu tech panelu jsem pouzil tuhle proceduru:

procedure TForm1.SetProperties(ClassName, Prop: string; Value: Integer);
var
  i: integer;
  PropInfo: PPropInfo;
  Component: TComponent;
begin
  for i := 0 to ComponentCount - 1 do
  begin
    Component := Components[i];
    if (Component is TPanel)   then
    begin
      PropInfo := GetPropInfo(Component.ClassInfo, Prop);
      if Assigned(PropInfo) then SetOrdProp(Component, PropInfo, Integer(Value));
    end;
  end;
end;

a tady je ten hroznej code na zvetseni/zmenseni.

procedure TForm1.LabelMaxiClick(Sender: TObject);
var w,x,y,z: integer;
begin
  x:= 90;
  y:= 110;
  z:= 200;
   If c = 0 then begin
  Form1.ClientWidth:= Form1.Width +(z*2);
  Form1.ClientHeight:= Form1.Height +z;
  Form1.Position:= poScreenCenter;
  SetProperties('Tpanel','Width',Width +(z*2));
  SetProperties('Tpanel','Height',Height +z);
  with Panel do begin // tenhle panel vracim na puvodni hodnoty, ten nechci menit 
  Width:= 193;
  Height:= 97;
  end;
// ----------------------------------------------- komponenty panel 1
   Bevel5.Height:= Bevel5.Height +x;
   DBMemo1.Height:= DBMemo1.Height +x;
   Bevel6.Top:= Bevel6.Top +x;
   BtNova.Top:= BtNova.Top +x;
   BtSmazat.Top:= BtSmazat.Top +x;
   BtUpravit.Top:= BtUpravit.Top +x;
   BtTisk.Top:= BtTisk.Top +x;
   BtRefresh.Top:= BtRefresh.Top +x;
   Bevel7.Top:= Bevel7.Top +x;
   BtKonec.Top:= BtKonec.Top +x;
   Label1.Top:= LKurzEuro.Top +x;
   Label2.Top:= LKurzEura.Top +x;
   Bevel8.Top:= Bevel8.Top +x;
   Bevel8.Height:= Bevel8.Height +y;
   Bevel8.Width:= Bevel8.Width +(z*2);
   DBGrid1.Top:= DBGrid1.Top +x;
   DBGrid1.Height:= DBGrid1.Height +y;
   DBGrid1.Width:= DBGrid1.Width +(z*2);
// ---------------------------------------------------- konec panel 1
  c:= 1;
end
else
begin
  SetProperties('Tpanel','Width',Width -(z*2));
  SetProperties('Tpanel','Height',Height -z);
  Form1.ClientWidth:= Form1.Width -(z*2);
  Form1.ClientHeight:= Form1.Height -z;
  Form1.Position:= poScreenCenter;
  with Panel do begin  // tenhle panel vracim na puvodni hodnoty, ten nechci menit 
  Width:= 193;
  Height:= 97;
  end;
// ----------------------------------------------- komponenty panel 1
   Bevel5.Height:= Bevel5.Height -x;
   DBMemo1.Height:= DBMemo1.Height -x;
   Bevel6.Top:= Bevel6.Top -x;
   BtNova.Top:= BtNova.Top -x;
   BtSmazat.Top:= BtNova.Top -x;
   BtUpravit.Top:= BtUpravit.Top -x;
   BtTisk.Top:= BtTisk.Top -x;
   BtRefresh.Top:= BtRefresh.Top -x;
   Bevel7.Top:= Bevel7.Top -x;
   BtKonec.Top:= BtKonec.Top -x;
   Label1.Top:= LKurzEuro.Top -x;
   Label2.Top:= LKurzEura.Top -x;
   Bevel8.Top:= Bevel8.Top -x;
   Bevel8.Height:= Bevel8.Height -y;
   Bevel8.Width:= Bevel8.Width -(z*2);
   DBGrid1.Top:= DBGrid1.Top -x;
   DBGrid1.Height:= DBGrid1.Height -y;
   DBGrid1.Width:= DBGrid1.Width -(z*2);
// ---------------------------------------------------- konec panel 1
  c:= 0;
end;
end;
Nahlásit jako SPAM
IP: 89.102.38.–
Reklama
Reklama
dyžon0
Stálý člen
2. 9. 2012   #2
-
0
-

no a to je jen na Panel1 ...  tohle bych musel udelat pro vsechny panely. Tlacitko na maximalizaci je sice jenom jedno a je videt ve vsech panelech, protoze je na 1. a ty dalsi zacinaji az pod nim, ale i tak by to bylo strasny ..

snad budete mit nekdo nejakej napad a poradite. .....   diky

Nahlásit jako SPAM
IP: 89.102.38.–
dyžon0
Stálý člen
2. 9. 2012   #3
-
0
-

tak me jeste napadlo nasazet tam GroupBoxy,vzdycky pod nekolik component,  a posouvat jen ty ...
ale i tak se mi to moc nelibi ..

Nahlásit jako SPAM
IP: 89.102.38.–
Řešení
liborb
~ Redaktor
+18
Guru
3. 9. 2012   #4
-
+1
-
Zajímavé
Vyřešeno Nejlepší odpověď

Úplně přesně nevím, o co se snažíš, ale nejspíš by ti stačilo využít to, co je. Okno aplikace máš průhledné, do něj zasazené panely. Máš ty panely přikotvéné (Anchor)? Pak stačí změnit velikost okna a změní se ti automaticky velikost všech panelů. No a stejně tak to uděláš s ovládacím prvky na panelu, kde správně zvolenou "lepením  na okraj" asi dostaneš to, co chceš. No a pak ti bude stačit jenom okno maximalizovat, a to můžeš dělat třeba přes tlačítko nebo klávesovou zkratku.

Pokud jsem to nepochopil správně, tak to zkus přes obrázky :)

Nahlásit jako SPAM
IP: 78.80.52.–
dyžon0
Stálý člen
3. 9. 2012   #5
-
0
-

#4 liborb
Cau,

myslim, ze jsi to pochopil spravne, tahle varianta me vubec nenapadla, jsem to ale hlupak, no jeste ze se mam kde zeptat a existuji lidi jako jsi ty ..

Tohle by uz bylo v pohode, ale jeste bych potreboval aby se mi i to Memo roztahlo na vysku a mozna i ten obrazek by se mohl zvetsit umerne vsemu a to uz nevim,jak udelat, protoze kdyz to po zvetseni v code posunu jen o nejaky pixely, tak se mi to pri ruznych velikostech monitoru bude spatne prekreslovat jestli me chapes ..

muselo by to byt treba
Memo1.Height:= ((Panel1.height) /5) ,

a posunuti toho DBGrid
DBGrid.Top:= DBGrid.Top +((Panel1.height) /5) - Memo1.MinHeight )) // do MinHeight bych zapsal velikost v normalu

a tohle bych stejne musel vypsat pro vsechny ty tlacitka a labely pod tim Memem, takze uspora sice je, ale porad to neni ono.
vytvoril jsem jen novej model, aplikaci,kde to resim delam pro sebe do firmy a jsou tam uz nasazeny loga a tak, aby nekdo nehalekal, ze reklama a podobne.

nejde mi vkladat obrazky ..?? nevim proc, tak tady jsou linky na ulozto.cz
http://ulozto.cz/xsrsuzT/1-jpg

http://ulozto.cz/x3MBDcs/2-jpg

Nahlásit jako SPAM
IP: 89.102.38.–
dyžon0
Stálý člen
3. 9. 2012   #6
-
0
-

ale cesta je to urcite spravna
uz mi jdou vkladat, tak tady jsou.

Nahlásit jako SPAM
IP: 89.102.38.–
liborb
~ Redaktor
+18
Guru
3. 9. 2012   #7
-
0
-

Asi takhle, pokud chceš, aby třeba 2 memo vedle sebe zabíraly celou šířku a první bral 2/5 a druhý zbylé 3/5, tak to si musíš udělat ručně. Pokud ovšem máš jenom pár ovládacích prvků, které se mají měnit na velikosti a zbytek ne, tak si můžeš pomoci vložením extra panelu nebo nějakého jiného "kontejneru", který se bude posouvat jako jediný a ty ovládací prvky v něm budou bez změny pozice atd.

V tom tvém příkladě, třeba to logo by mělo dostat ještě kotvu Right, aby "lepilo" i na pravou stranu. Ovládací prvek nemusí být roztažený přes celou šířku nebo výšku, aby si ho mohl kotvit rozličně. Kotvou získáš mnohé, třeba tlačítko, co bude pořád pravém dolním rohu (kotva Right/Bottom), to tvoje logo je Left, Top a Right, u memo už si na to přišel atd. Nejlepší je toho, co nejvíce zvládnout tím, co je k dispozici a zbytek si případně doupravit :).

Nahlásit jako SPAM
IP: 78.80.52.–
dyžon0
Stálý člen
3. 9. 2012   #8
-
0
-

#7 liborb
jasny, ..  super, diky moc, ted uz si s tim pohraju ... , beru za vyresene ..

Nahlásit jako SPAM
IP: 89.102.38.–
Zjistit počet nových příspěvků

Přidej příspěvek

Toto téma je starší jak čtvrt roku – přidej svůj příspěvek jen tehdy, máš-li k tématu opravdu co říct!

Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku

×Vložení zdrojáku

×Vložení obrázku

Vložit URL obrázku Vybrat obrázek na disku
Vlož URL adresu obrázku:
Klikni a vyber obrázek z počítače:

×Vložení videa

Aktuálně jsou podporována videa ze serverů YouTube, Vimeo a Dailymotion.
×
 
Podporujeme Gravatara.
Zadej URL adresu Avatara (40 x 40 px) nebo emailovou adresu pro použití Gravatara.
Email nikam neukládáme, po získání Gravatara je zahozen.
-
Pravidla pro psaní příspěvků, používej diakritiku. ENTER pro nový odstavec, SHIFT + ENTER pro nový řádek.
Sledovat nové příspěvky (pouze pro přihlášené)
Sleduj vlákno a v případě přidání nového příspěvku o tom budeš vědět mezi prvními.
Reaguješ na příspěvek:

Uživatelé prohlížející si toto vlákno

Uživatelé on-line: 0 registrovaných, 16 hostů

Podobná vlákna

Maximalizace — založil froo+

Tkinter - maximalizace okna — založil wickzig

Alt + title — založil netman92

Animace - pohyb objektu — založil Pavel

Spuštění externí aplikace — založil _Radek_

 

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032016 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý