C++ BUILDER tekst+grafika / layout programu

0

Witam, jestem totalnie początkującym userem buildera :), mam za zadanie stworzenie projektu i potrzebne mi są 2 rzeczy:

  1. Możliwość wyswietlania tekstu i grafiki w oknie na wzór html'a, najlepiej zeby mozna bylo poprzez ort! wyrazy przejsc do innych dzialow/poddziałów. (czyli mozliwosc robienia linku z wyrazu w wiekszym tekscie i mozliwosc wstawiania grafiki w tym tekscie, cały tekst, działy poddzialy powinny byc/pojawiać się w tym samym oknie).

  2. To juz mniej wazne, aczkolwiek gdyby ktos znał sposob proszę o info. Mianowicie zmiana wyglądu okna, coś na podobieństwo WINAMPA :), nie zalezy mi miec mozliwosci zmiany layoutów, ale jeden statyczny, tak aby okienko wygladalo lepiej niz takie windosowskie.

Najbardziej zalezy mi na 1 punkcie, poniewaz projekt ten ma byc "małą encyklopedią", wiec potrzebowałbym miec mozliwosc wstawiania zawartosci podobnie jak w html'u.

Za wszelke info, linki do ew. tutoriali/postow, nawet same nazwy skryptów/komponentów itd itp (cokolwiek co pozwoli mi dalej szukac i czytac na ten temat) SERDECZNIE WAM DZIĘKUJE :).

P.S. Nawet niewiem czy cos takiego wiąze sie z czyms zaawansowanym, czy jest jakies proste rozwiązanie tego problemu...

0
  1. Możesz sobie zrobić parser jakiegoś własnego makro języka, i tam, gdzie chcesz link wstawiasz TLabel z odpowiednim OnClick i z innym kursorem niż standardowy. Sposobów jest mnogo...

a) rysować po całym swoim oknie (razem z paskiem tytułu)
b) ustawić formie FormStyle = fsNone; i samemu porobić odpowiednie procedurki do zmiany rozmiaru okna, przesuwania go, itp...

0

punkt 2 swietnie działa (zlikwidowałem paski, dalem transparent czarny kolor i teraz rzeźbię okienko jak tylko dusza zapragnie :D), mam tylko jedno pytanko :), gdy mam juz usuniety gorny pasek, nie ma za co "łapać" :), rozumiem ze trzeba napisac jakas procedurke dla OnDragOver? Wiesz moze jak mogłaby ona wyglądać?

Początkowo chciałem zagarnąc cos z bibliotek buildera, ale oni maja wszystko pokompilowane, so I have no idea :P...

0

Użyj dowolnego komponentu obsługującego zdarzenie OnMouseDown i wrzuć tam:

if ( Button == mbLeft )
  {
   SendMessage( Handle, WM_LBUTTONUP, 0, 0 );
   SendMessage( Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0 );
  }
0

Jeśli chcesz ort! łapiąc np: za obrazek Image1 możesz użyć kodu:

// Plik nagłówkowy np. Unit1.h
//--------------------------------
private:
int pozX, pozY;
bool go;
//--------------------------------
void __fastcall TForm1::Image1MouseDown(TObject *Sender,
        TMouseButton Button, TShiftState Shift, int X, int Y)
{
pozX = X;
pozY = Y;
go = true;
}
//--------------------------------
void __fastcall TForm1::Image1MouseUp(TObject *Sender, TMouseButton Button,
        TShiftState Shift, int X, int Y)
{
go = false;
}
//--------------------------------
void __fastcall TForm1::Image1MouseMove(TObject *Sender, TShiftState Shift,
        int X, int Y)
{
if(go){
Form1->Left = (Form1->Left - pozX) + X;
Form1->Top = (Form1->Top - pozY) + Y;
        }
}
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
go = false;
}

Dzięki temu będziesz mógł poruszać całą formą chwytając za obrazek Image1

1 użytkowników online, w tym zalogowanych: 0, gości: 1