logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

Turbo Pascal 7.0 - jak stworzyć graficzne okno z 5 klawiszami?

ekspert100 26 Lip 2008 20:13 7083 9
REKLAMA
  • #1 5380873
    ekspert100
    Poziom 18  
    Posty: 537
    Pomógł: 32
    Ocena: 72
    Witam !
    TURBO PASCAL 7.0

    Potrzebuję źródła do programu który będzie
    wyświetlał graficzne okno (kolor)
    zwierające 5 klawiszy w pionie

    Każdy klawisz uruchamia swój program

    klawisz 1 = prog1
    klawisz 2 = prog2
    klawisz 3 = prog3
    klawisz 4 = prog4
    klawisz 5 = prog5

    Czy taka grafika jest możliwa na karcie np: riva tnt 2

    proszę o pomoc

    pozdrawiam
  • REKLAMA
  • #2 5380912
    Dżyszla
    Poziom 42  
    Posty: 7075
    Pomógł: 1095
    Ocena: 225
    Nie pamiętam na 100% czy dotyczyło to też Turbo Pascala, ale generalnie tryb graficzny w Pascalu jest jak najbardziej możliwy. Po prostu rysujesz po ekranie o rozdzielczości max 800x600 (więcej nie bylo udostępniane standardowymi sterownikami).
    A zdarzenia i sposób wyboru klawisza to już inna bajka.

    Dodano po 2 [minuty]:

    PS. Graficzny tryb można uzyskać na dowolnej karcie współpracujacej ze standardem EGA/CGA/VGA/SVGA - od standardu zależy rozdzielczość i ilość koloru, czyli w zasadzie każdej karcie graficznej wyprodukowanej po 1985 roku.
  • #3 5381797
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    Jak najbardziej można to zrobić. Po narysowaniu klawiszy, wykorzystaj fcje WhereX, WhereY do okreslenia położenia kursora, a do wykonania zewnętrznego programu wykorzystaj fcję Exec(......).
  • REKLAMA
  • #4 5382141
    spazz4
    Poziom 16  
    Posty: 249
    Pomógł: 2
    Ocena: 11
    w TP 7.0 nie uzyskasz 800x600, maksimum rozdzielczości to 640x480 przy standardowych bibliotekach, a wszystko inne jest do zrealizowania.
  • #6 5385070
    ekspert100
    Poziom 18  
    Posty: 537
    Pomógł: 32
    Ocena: 72
    Witam!
    Może ktoś ma pod ręką fragment procedury

    Na wyświetlenie klawisza z opisem np:prog1
    w trybie graficznym i podłączenie do niego linku
    do uruchomienia programu np:
    prog1.exe

    Proszę o pomoc
    pozdrawiam!

    Proszę nie używać wielokrotnie !!!, to na prawdę nie są ozdobniki.
    [charm_spider]
  • REKLAMA
  • #7 5385141
    charm_spider
    Poziom 22  
    Posty: 541
    Pomógł: 39
    Ocena: 13
    ekspert100 napisał:
    Może ktoś ma pod ręką fragment procedury...


    Zamieść to, co już masz, a chętnie pomożemy.
    Nie zamieszczamy jednak gotowych programów na zasadzie "ma ktoś..".
    Forum jest po to, aby pomagać, nie żeby robić coś za kogoś.
  • REKLAMA
  • #9 5385330
    Dżyszla
    Poziom 42  
    Posty: 7075
    Pomógł: 1095
    Ocena: 225
    ekspert100 napisał:
    Witam!
    Może ktoś ma pod ręką fragment procedury
    Może ma ktoś bana na Google? Względnie prosto do kodów (lub tylko do polskich kodów). W sieci znajdziesz nie jeden przykład, a co do przycisku odpowiedź jest prosta - sam musisz go sobie namalować! Nie ma żadnych specjalnych standardowych procedur.
  • Pomocny post
    #10 5388478
    ed-ek
    Poziom 34  
    Posty: 1814
    Pomógł: 275
    Ocena: 42
    Ponieważ wprowadziłem Cię w błąd oferując fcję wherex i wherey, która działa tylko w crt, zamieszczam kawałek kodu, który pokazuje jak korzystając z przerwań można rozwiązać ten problem. Po najechaniu kursorem na prostokąt i kliknięciu lewego klawisza, na ekranie pojawia się tekst. Naciśnięcie w innym miejscu nie wywołuje reakcji. Można to też rozwiązać poprzez analizę koloru prostokąta stosując fcję getpixel(x,y). Kod nie jest optymalny bo to wycinek innego programu dużo wcześniej napisanego. Zamiast kazać wypisywać ttekst można przez fcję Exec(...) wywołać inny progr. O exec poczytaj w help'ie Pascala.
    
    uses crt,graph,dos;
    var x,y,a,b,c,d:integer;
         rej:registers;
                                  procedure MYSZ(z:integer;
                                            var a,b,c,d:integer);
    begin
                 case z of
                   1: begin with rej do ax:=1;
                    intr($33,rej);end;
               end;
    end;
                             procedure GDZIE;
         var k:integer;
    begin
                   with rej do begin rej.ax:=5;rej.bx:=0;end;
                   intr($33,rej);
                   with rej do
                   k:=rej.bx;
                   while k=0 do
                 begin
                     with rej do begin rej.ax:=5;rej.bx:=0;end;
                     intr($33,rej);
                     k:=rej.bx;c:=rej.cx;d:=rej.dx;
                      if(c>30)and(c<90)and(d>30)and(d<110) then begin
                      outtextxy(200,200,'dddd');
                      outtextxy(30,400,'press any key');
                      readkey;closeGraph;end
                      else k:=0;
                end;
    
    
    end;
    
    
      begin
        detectgraph(x,y);
        initgraph(x,y,'c:\tp\bgi');
         setcolor( 14);
        rectangle(30,30,90,110);
        setfillstyle(solidfill,1);
        floodfill(40,40,14);
    
        MYSZ(0,a,b,c,d);
        MYSZ(1,a,b,c,d);
        GDZIE;
    {   readkey;}
      end.
    

    Tu: initgraph(x,y,'c:\tp\bgi');
    musi być podana pełna ścieżka do katalogu. U mnie jest jak powyżej.

Podsumowanie tematu

✨ Dyskusja dotyczy możliwości stworzenia w Turbo Pascalu 7.0 graficznego okna kolorowego zawierającego pionowo ułożone 5 klawiszy, z których każdy uruchamia inny program (prog1.exe, prog2.exe itd.). Potwierdzono, że tryb graficzny w Turbo Pascalu jest możliwy, choć standardowa rozdzielczość to maksymalnie 640x480 przy użyciu modułu graph, a wyższe rozdzielczości (np. 800x600) wymagają dodatkowych bibliotek lub sterowników SVGA. Obsługa zdarzeń klawiatury i myszy wymaga ręcznego rysowania przycisków oraz wykrywania pozycji kursora (np. funkcjami WhereX, WhereY lub przerwaniami BIOS-u). Do uruchamiania zewnętrznych programów służy funkcja Exec. Nie istnieją standardowe procedury do tworzenia przycisków graficznych, więc należy je samodzielnie narysować i obsłużyć zdarzenia kliknięć. Karta graficzna Riva TNT2 jest kompatybilna z trybami EGA/CGA/VGA/SVGA, więc obsługa grafiki jest możliwa. Przykładowy fragment kodu pokazujący obsługę kliknięć i rysowanie prostokątów w trybie graficznym został udostępniony, z sugestią wykorzystania funkcji getpixel do detekcji kliknięć.
Wygenerowane przez model językowy.
REKLAMA