Strona: [  << <   1 2   > >>  ]  z  2     
Autor Temat: zmiana rozmianu kontrolki wskutek zmian w formatce
monia



Typ: neutral
Postów: 26
Zarejestrowany: Apr 2003
zmiana rozmianu kontrolki wskutek zmian w formatce

Taki mam mały problemik, z racji mojego amatorstwa jeszcze kłopotliwy...
Jak napisać funkcję, która zmieni rozmiar np. przycisku (CommandButton) proporcjonalnie do zmiany rozmiaru formularza ?? Tzn. jeżeli formularz zostanie np. zmniejszony o 10%, to powienien również zmniejszyć sie rozmiar przycisku o 10% (procent nie jest podawany przez użytkownika aplikacji, a ma być obliczany w zależności od tego co z formularzem zrobił użytkownik)??

BARDZO BARDZO PROSZĘ.. POMÓŻCIE..   


_____________________________________________
nic co ludzkie, nie jest mi obce

27-04-2003 02:04
Pokaż profil monia  Wyślij email do monia        4894458
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Też miałem kiedyś taki kłopot i na tym forum został ten problem rozstrzygnięty. Post jest pod adresem: http://board.freeweb.pl/posts.php?board_id=1543&topic_id=37699&post_id=391711&select=391711#post391711


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


27-04-2003 22:36
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
m-a-x



Typ: neutral
Postów: 366
Zarejestrowany: Jan 2003

nie wiem u mnie link podany przez Vipera nie działa i możesz też mieć problemy z wejściem tam wiec podaje ci jeszce raz (troche zmieniony):

http://board.freeweb.pl/posts.php?board_id=1543&topic_id=37699&division=615


_____________________________________________

Problemem zazwyczaj nie jest brak osób znających odpowiedź a zadanie właściwego pytania!

29-04-2003 00:16
Pokaż profil m-a-x  Wyślij email do m-a-x   
monia



Typ: neutral
Postów: 26
Zarejestrowany: Apr 2003

hmmm ściągnęłam stamtąd te 2 pliki ocx, jendak jeszcze nigdy nie miałam z tym doczynienia, widać jestem jeszcze baaaaaaardzo poważnym amatorem...
szczerze mówiąc... nie mam pojęcia co z tymi plikami zrobić...
nie da się tego inaczej załatwić.. ??ktoś tam wspomniał o zdarzeniu resize... też mi sie nie wydaje, żeby tu w tym przypadku można to zastosować.. naprawdę nie ma innych możliwości ??


_____________________________________________
nic co ludzkie, nie jest mi obce

30-04-2003 00:09
Pokaż profil monia  Wyślij email do monia        4894458
m-a-x



Typ: neutral
Postów: 366
Zarejestrowany: Jan 2003

Jeżeli chodzi o pliki ocx - sa to takzwane kontrolki (co to dokładnie jest i jak z tego kożystać - najlepiej poczytaj sobie na stronach www). aby dodać ytaką kontrolke do toolbara w VisualBasicu klikasz prawym przyciskiem na toolbar na którym są pozostałe kontrolki i z popup meny wybierasz "Components" potem w okienku które ci sie pokaże klikasz na przycisk Browse i tam wybierasz jeden z plików które ściągnełaś. Nie pamiętam czy odrazu bedzie zaznaczona ta kontrolka na liście (napewno po wybraniu jej powinna ci sie pokazać na liście), jak nie to zaznacz ją i kliknij OK. Jak zauważysz pokaże ci sie dodatkowa ikonka na toolbar'ze - i to jest właśnie ta kontrolka. (mam nadzieje że nie zamotałem tu zabardzo)

Osobiście ich nie ściągałem - nawet nie czytałem tamtego postu (z tego odnośnika który podał Viper). Faktycznie chyba nikt tam nie wytłumaczył do końca jak to sie robi - no więc przejdźmy do meritum:

Dodajesz zdażenie do formy "Resize" (jak już ktoś tam wspomniał). Następnie dodajesz np cuś takiego (to najprostrze rozwiązanie:

Command1.Width = Form1.Width - 1000

i tak samo może być dla .Height, ta liczba 1000 oznacza ile dana kontrolka ma być mniejsza od formy (no moze też być większa ale to chyba nie ma sensu   )

pokombinuj troche a napewno dojdziesz do tego co chcesz zrobić. Powodzenia


_____________________________________________

Problemem zazwyczaj nie jest brak osób znających odpowiedź a zadanie właściwego pytania!

30-04-2003 18:27
Pokaż profil m-a-x  Wyślij email do m-a-x   
monia



Typ: neutral
Postów: 26
Zarejestrowany: Apr 2003

oki, teraz już chyba jarzyna o co chodzi...
ale jeszcze jedno zapytko.. bo cel jest taki, żeby on sam se wyliczł o ile ma zmienić rozmiar buttona i żeby ten rozmiar zmieniał proporcjonalnie...
?? kombinuję, ale hmmm... on mnie nie za bardzo ostatnio słucha... 

obywatelu pomożecie ??


_____________________________________________
nic co ludzkie, nie jest mi obce

30-04-2003 20:02
Pokaż profil monia  Wyślij email do monia        4894458
monia



Typ: neutral
Postów: 26
Zarejestrowany: Apr 2003

no i właśnie o to chodzi, że ten procent nie ma być z góry ustalony, nie ma go też deklarować użytkownik programu...
to o ile ma się zmienić rozmiar commandbuttona ma obliczyć program proporcjonalnie do zmian rozmiarów formatki, jakich dokonał użytkownik...


_____________________________________________
nic co ludzkie, nie jest mi obce

01-05-2003 00:42
Pokaż profil monia  Wyślij email do monia        4894458
Jelcyn
Admin forum




Typ: admin
Postów: 895
Zarejestrowany: Apr 2002

Może coś takiego:
Const Procent=5

PrSzer=Form1.Width/100
PrWys=Form1.Height/100

i teraz
Button1.Width=PrSzer*Procent
Button1.Height=PrWys*Procent


_____________________________________________
Jelcyn
vb4all(małpka)canpol.pl
http://www.coderscity.pl/no-vb4all * http://www.jelcyn.com

01-05-2003 10:49
Pokaż profil Jelcyn  Wyślij email do Jelcyn   Odwiedź stronę Jelcyn       270849979    6237704
monia



Typ: neutral
Postów: 26
Zarejestrowany: Apr 2003

a co znaczy to :

Const procent = 5

tego jeszcze nie miałam...


_____________________________________________
nic co ludzkie, nie jest mi obce

01-05-2003 11:02
Pokaż profil monia  Wyślij email do monia        4894458
Jelcyn
Admin forum




Typ: admin
Postów: 895
Zarejestrowany: Apr 2002


a co znaczy to :

Const procent = 5

tego jeszcze nie miałam...



To jest stała (o stałych możesz poczytać w kursie VB, na górze tej strony, pod logiem VB4all jest taki link teoria, kliknij w niego ;-)
Jak zmienisz z 5 na 10 to przycisk będzie miał wielkość 10% wielkości formularza (pod warunkiem, że nie zminisz tych formuł matematycznych)


_____________________________________________
Jelcyn
vb4all(małpka)canpol.pl
http://www.coderscity.pl/no-vb4all * http://www.jelcyn.com

01-05-2003 11:19
Pokaż profil Jelcyn  Wyślij email do Jelcyn   Odwiedź stronę Jelcyn       270849979    6237704
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Ok-mnie ten problem też od dawna "trawi", tak więc jakby wreszcie ktoś postawił przysłowiową kropkę nad "i" i napisał TU cała procedurę, która zrobi to co ma zrobić, czyli będzie zmieniać wszystko na formie proporcjonalnie do jej rozmiarów.
Co do tych kontrolek-one są dość dobre, ale nie aplikacja po skompilowaniu nie zmienia tych kontrolek, tak dobrze i realistycznie jak np. aplikacje napisane w Delphi czy C++... Czyżby tamte języki miały jakąś gotową, wbudowaną funkcję??? Chyba tak musi być, bo rzadko widzę, żeby ktoś piszący w VB zrobił swoją aplikację z możliwością zmiany okna-ba nawet często zdezaktywowany jest przycisk maksymalizacji...


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


07-05-2003 21:47
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
Viper87



Typ: neutral
Postów: 490
Zarejestrowany: Oct 2002

Acha, no i nie napisałem jednego, ten kod Jelcyna mi nie chodzi jak go wkleję "na żywca"


_____________________________________________
Viper

"Savoir c`est prevoir, prevoir c`est prevenir". 
(Wiedzieć to przewidzieć, przewidzieć to zapobiegać) 


07-05-2003 21:48
Pokaż profil Viper87  Wyślij email do Viper87   Odwiedź stronę Viper87  
m-a-x



Typ: neutral
Postów: 366
Zarejestrowany: Jan 2003

Ludzie o czym wy wogóle mówicie: nie ma żadnych jakiś standardów dotyczących zmiany wilekości kontrolek podczas zmiany rozmiary formatki. Zawsze trzeba oprogramowywać zdażenie Resize dla Form i tam dodawać kod dla każdej kontrolki która ma zmienić swój rozmiar. Skoro prosicie o kod dam tu prosty przykład:

Stwórzcie nowy projekt i na formie dodajcie 2 kontrolki: TexBox (Text1) i CommandButton (Command1) i wklejcie ten kod:

Private Sub Form_Resize()
'gdy okno zminimalizowane wtedy - wyjście z funkcji
If Form1.WindowState = 1 Then Exit Sub
'poniższy wiersz nie jest niezbędny gdy poprawnie umieścicie text box'a
Text1.Left = 120: Text1.Top = 120
Text1.Width = Form1.Width - 350
Text1.Height = Form1.Height - 1100
Command1.Left = Form1.Width / 2 - Fix(Command1.Width / 2)
'użyłem funkcji Fix aby zaokrąglić wartość dzielenia do liczby całokowitej
Command1.Top = Text1.Top + Text1.Height + 100
End Sub

Podczas zmiany rozmiaru formy text box rozciąga się a przycisk zostaje umieszczony pod text boxem na środku okna. Mam nadzieje że juz nie bedziecie mieli żadnych pytań dotyczących tego problemu. Tak nawiasem mówiąc nie wiem o jaki realizm ci chodzi Viper?


_____________________________________________

Problemem zazwyczaj nie jest brak osób znających odpowiedź a zadanie właściwego pytania!

10-05-2003 16:19
Pokaż profil m-a-x  Wyślij email do m-a-x   
monia



Typ: neutral
Postów: 26
Zarejestrowany: Apr 2003

no mistrzuniu Maxiu wreszcie ktoś załapał o co mi chodzi   deczko pokombinowałam z tym Twoim kodem (bo był mi potrzebny tylko command)no i działa cudownie - zmienia się proporcjonalnie tylko nie wiem jeszcze jednego, a mianowicie... gdy uruchamiam program, to command mi się robi wielki na całą formatkę.. chciałabym mu na początek nadać jakiś tam określony rozmiar i żeby potem już działał tak jak teraz coś tam mi w tej kwestii wychodzi ale nie do końca...


_____________________________________________
nic co ludzkie, nie jest mi obce

10-05-2003 23:16
Pokaż profil monia  Wyślij email do monia        4894458
monia



Typ: neutral
Postów: 26
Zarejestrowany: Apr 2003

oki niepotrzebnie pytałam już se sama z tym poradziłam.. ale jest jeszcze jedno.. jak się zmniejsza do takiego maciuoeńkiego to się pojawia błąd o treści jaka następuje: 'Invalid property value'.. i tylko jednego już nie wiem, jak to zabezpieczyć żeby się nie wysypywało... ?



_____________________________________________
nic co ludzkie, nie jest mi obce

10-05-2003 23:38
Pokaż profil monia  Wyślij email do monia        4894458
m-a-x



Typ: neutral
Postów: 366
Zarejestrowany: Jan 2003

Oh monia monia - co ja sie z tobą mam

Błąd ten wyskakuje dlatego bo zmniejszając forme do wysokości mniejszej niż 1100 po wykonaniu działania:
Text1.Height = Form1.Height - 1100
zostaje przypisana wartość ujemna wysokości TextBoxa - co jest właśnie powodem wyskakiwania błędu. Aby się zabezpieczyć na tą ewentualność możesz dodać cuś takiego na początku
if form1.height <= 1100 then exit sub

Podobnie jest oczywiście gdy chodzi o szerokość jednak akurat w tym przykładzie z nią problemów nie ma (a to dlatego że nie da sie zmniejszyć szerokości formy do 350 )

No mam nadzieje że wszystkie sprawy dotyczące zmiany rozmiarów kontrolek zostały już wyjaśnione.


(ach to oglądanie filmów po nocach mnie kiedyś wykończy)


_____________________________________________

Problemem zazwyczaj nie jest brak osób znających odpowiedź a zadanie właściwego pytania!

11-05-2003 04:33
Pokaż profil m-a-x  Wyślij email do m-a-x   
monia



Typ: neutral
Postów: 26
Zarejestrowany: Apr 2003

oj maxiu maxiu bardzo Ci dziękuję

nio to mam problem prawie z głowy... prawie, bo ja zauważyłam, że command mi się cholipa nie zmienia wcale proporcjonalnie, tylko o tyle samo co formatka... ale już mniejsza o to niech będzie jak jest i tak jest lepiej niż przypuszczałam


_____________________________________________
nic co ludzkie, nie jest mi obce

11-05-2003 17:09
Pokaż profil monia  Wyślij email do monia        4894458
herszt_mielony



Typ: neutral
Postów: 17
Zarejestrowany: Apr 2003
Masz czego chcesz

Robisz form1 i command1 i ustawiasz go gdzie chcesz

Dim PROCENTwidth as integer
Dim PROCENTheight as integer

Private Sub Form_Load()
'obliczanie jaki procent wys. i szer. zajmuje na formie command
PROCENTwidth = Fix(command1.width/form1.width * 100)
PROCENTheight = Fix(command1.height/form1.height * 100)
End Sub

Private Sub Form_Resize()
Command1.width = Fix(Form1.width * PROCENTwidth / 100) + 1
Command1.height = Fix(Form1.height * PROCENTheight / 100) + 1
End Sub

koniec :* dla monii

[Post edytowany dnia 11-05-2003 17:49 przez herszt_mielony]

11-05-2003 17:47
Pokaż profil herszt_mielony  Wyślij email do herszt_mielony   
monia



Typ: neutral
Postów: 26
Zarejestrowany: Apr 2003

nio jak to miło gdy coraz więcej ludzisków kapuje
jednego ludziska więcej zawsze miło ugościć w gronie pomagaczy
dzięki herszt


_____________________________________________
nic co ludzkie, nie jest mi obce

11-05-2003 20:04
Pokaż profil monia  Wyślij email do monia        4894458
anonim




Typ: Nie zarejestrowany

a dziala chociaz ten kod, bo herszt go z glowy pisal i nie sprawdzal sam jestem swiadkiem

12-05-2003 20:22
  
Wszystkich odpowiedzi: 20 :: Maxymalnie na stronę: 20
Strona: [  << <   1 2   > >>  ]  z  2