kategoria: Blitz
[#31] Re: [blitz] pytania ... (i odpowiedzi ?)

@peceha, post #30

Wydaje mi się, że wystarczy utworzyć czysty RastPort i policzyć TextExtent() względem niego. Po prostu zadeklaruj strukturę RastPort i wykonaj procedurę InitRastPort() podając za parametr adres tej struktury. Wówczas RastPort będzie miał domyślną czcionkę systemową. Następnie licz TextExtent() względem tego RastPortu.
[#32] Re: [blitz] pytania ... (i odpowiedzi ?)

@Hexmage960, post #31

hmmm...
zrobilem tak:
DEFTYPE.RastPort  *rp
...
InitRastPort_(*rp)

po uruchomieniu programu mam reset i czerwony ekran
Moze do tego wroce pozniej bo to co napisales mogloby sie sprawdzic.
[#33] Re: [blitz] pytania ... (i odpowiedzi ?)

@peceha, post #32

1. Zadeklaruj statycznie strukturę RastPort (nie wskaźnik).
2. Funkcji InitRastPort podaj adres tego RastPortu.

Więcej o tej funkcji poczytasz w Autodoku.

To jest najprostszy sposób na dostanie się do domyślnego fontu systemowego (nie trzeba czytać pliku z preferencjami).

Choć według mnie lepiej użyć czcionki ekranowej z RastPortu ekranu. Dlaczego nie chcesz jej użyć?

Możesz też, jeśli chcesz, otworzyć własną czcionkę, lub taką, wybraną przez użytkownika w requesterze ASL/reqtools lub podobnym.

Ostatnia aktualizacja: 01.02.2018 17:24:15 przez Hexmage960
[#34] Re: [blitz] pytania ... (i odpowiedzi ?)

@Hexmage960, post #33

Nie to, ze nie chce tylko program (albo system) sam uzywa systemowej do pisania w oknie (nie ekranowej) - myslalem juz o tym by wymusic mu ekranowa i wtedy mialbym wszystko z glowy.

Problem jest jednak innej natury: jeszce 2 dni temu nie wiedzialem NIC o tym wszystkim, zylem sobie spokojnym zyciem szeroki uśmiech a tutaj nagle do dzis zdazylem przewalic setki stron na necie patrzac w jedna wielka abstrakcje :) - ok, moze na poczatku to byla abstrakcje ale juz teraz nieco nabiera ksztaltow, hehe. Innymi slowy glowa mi peka w szwach :) i mam jeden wielki metlik :)

Poprawilem to wyzej i teraz dziala:
DEFTYPE.RastPort rp
InitRastPort(&rp)


przy sprawdzaniu TextExtent podaje rp czyli tak
TextExtent_(rp,"text",4,result.TextExtent)

na ekranie WB policzyl prawidlowo ale na ekranie Blitz-a juz nie.
Jesli ekran uzywa innej czcionki to moje okno tez zostaje zapisane ta czcionka (wygladaloby to jakby uzywalo ekranowej) - ale na WB gdy zmienie ekranowa to moje okno z niej nie korzysta, dopiero gdy zmienie systemowa to czionka uzyta w moim oknie zmienia sie odpowiednio. Troche sie zgubilem

Ostatnia aktualizacja: 01.02.2018 17:38:03 przez peceha
[#35] Re: [blitz] pytania ... (i odpowiedzi ?)

@peceha, post #34

Czy nie powinieneś użyć operatora adresu & również w parametrze funkcji?

TextExtent_(&rp)

Jesli ekran uzywa innej czcionki to moje okno tez zostaje zapisane ta czcionka (wygladaloby to jakby uzywalo ekranowej) - ale na WB gdy zmienie ekranowa to moje okno z niej nie korzysta, dopiero gdy zmienie systemowa to czionka uzyta w moim oknie zmienia sie odpowiednio. Troche sie zgubilem

Hmm.. też mnie to zastanawia. Okienka powinny "dziedziczyć" czcionkę po czcionce ekranowej.

Chyba sprawdzę u siebie.

Jak chcesz sprawdzić jaka czcionka jest podpięta pod RastPort popatrz na pole Font. Jest ono wskaźnikiem na strukturę TextFont.

Ostatnia aktualizacja: 01.02.2018 17:46:06 przez Hexmage960
[#36] Re: [blitz] pytania ... (i odpowiedzi ?)

@Hexmage960, post #35

Bede wdzieczny jesli sprawdzisz jak to jest z tymi fontami.

ps.
operator adresu nic nie zmienil
[#37] Re: [blitz] pytania ... (i odpowiedzi ?)

@peceha, post #36

Sprawdziłem. Rzeczywiście jest jak u Ciebie.

Znalazłem rozdział dot. tej kwestii w dokumentacji:

Według dokumentacji okienko dziedziczy czcionkę ekranową tylko gdy ekran był otwarty z parametrem SA_Font. W przeciwnym przypadku dziedziczy czcionkę systemową.

Pewnie dlatego ekran Blitz Basica ma inną czcionkę domyślną dla okienek niż na Workbenchu.

Jako rozwiązanie dla okienek, które są otwierane na niewłasnych ekranach podane jest jawne ustalenie czcionki za pomocą SetFont() po otwarciu okienka.

Czcionkę pobierzesz np. z RastPortu ekranu (okno->WScreen->RastPort.Font w języku C).

Moim zdaniem nie ma co gmatwać sprawę, gdyż sprawa jest prosta.

Zaś to, że czynisz swój program tzw. font-sensitive to świetna sprawa.

Ostatnia aktualizacja: 01.02.2018 18:20:08 przez Hexmage960
[#38] Re: [blitz] pytania ... (i odpowiedzi ?)

@Hexmage960, post #37

Dzieki!!
Zrobilem wlasnie tak jak napisales.
Jesli Cie dobrze zrozumialem to chodzi o to by przed otwraciem okna przypisac sa_Font do ekranu (jakby zostal pominiety przy inicjaci) a wartosc sa_Font to i tak bedzie font ekranowy danego ekranu tylko ze po tym przypisaniu nie bedzie juz mozliwosci przypisania oknu czcionki systemowej szeroki uśmiech

EDYCJA:
zle zrozumiealem
przypisuje te czcionke do okna - i teraz dziala faktycznie bo to co napisalem wyzej jednak szwankowalo w kilku miejscach

Dzieki

a wyglada to tak:
SetFont_(*win\RPort,*staScr\RastPort\Font)


no i teraz moge robic obliczenia tekstu wzgledem rastportu ekranu bo okno uzyje tej samej czcionki :)

Ostatnia aktualizacja: 01.02.2018 18:50:06 przez peceha

Ostatnia aktualizacja: 01.02.2018 19:05:57 przez peceha
[#39] Re: [blitz] pytania ... (i odpowiedzi ?)

@peceha, post #38

Jesli Cie dobrze zrozumialem to chodzi o to by przed otwraciem okna przypisac sa_Font do ekranu (jakby zostal pominiety przy inicjaci) a wartosc sa_Font to i tak bedzie font ekranowy danego ekranu tylko ze po tym przypisaniu nie bedzie juz mozliwosci przypisania oknu czcionki systemowej

Czcionki ekranowej nie możesz zmienić po jego otwarciu (SA_Font podajemy tylko przy otwieraniu ekranu). Po prostu używaj SetFont() na czcionkę ekranową, bądź dowolną wybraną przez Ciebie czcionkę i będzie w porządku.
[#40] Re: [blitz] pytania ... (i odpowiedzi ?)

@Hexmage960, post #39

Poprawilem sie w poscie wyzej
[#41] Re: [blitz] pytania ... (i odpowiedzi ?)

@peceha, post #40

No to teraz kolejne:

czy jest jakas komenda aktywujaca ekran?
jesli przychodze z innego ekranu i powiedzmy nacisne prawy przycisk myszki to gorne menu sie nie otwiera na nowym (widocznym) ekranie bo aktywny jest ten z tylu.
[#42] Re: [blitz] pytania ... (i odpowiedzi ?)

@peceha, post #41

Aktywuj okienko na tym ekranie za pomocą ActivateWindow().

Albo - skorzystaj z Commodity AutoPoint.
[#43] Re: [blitz] pytania ... (i odpowiedzi ?)

@Hexmage960, post #42

Uzylem ActivateWindow().
Zdziwilo mnie ze przy braku okien na ekranie komenda ta nie wywala bledu wiec zaoszczedzilo mi dodatkowych warunkow co jest na duzy plus.
Na stronie www.PPA.pl, podobnie jak na wielu innych stronach internetowych, wykorzystywane są tzw. cookies (ciasteczka). Służą ona m.in. do tego, aby zalogować się na swoje konto, czy brać udział w ankietach. Ze względu na nowe regulacje prawne jesteśmy zobowiązani do poinformowania Cię o tym w wyraźniejszy niż dotychczas sposób. Dalsze korzystanie z naszej strony bez zmiany ustawień przeglądarki internetowej będzie oznaczać, że zgadzasz się na ich wykorzystywanie.
OK, rozumiem