Builder C++ TabControl
Ostatnio zmodyfikowano 2011-12-17 18:34
DVD93 Temat założony przez niniejszego użytkownika |
» 2011-12-17 16:34:35 Chciałbym by za każdym razem Tworzyło się nowe memo między którymi mógłbym się swobodnie przełączać za pomocą zakładek. |
|
akwes |
» 2011-12-17 16:50:32 Hm... Chyba nie powinienem ale masz :P
#include <vcl.h> #pragma hdrstop
#include "Unit1.h"
#pragma package(smart_init) #pragma resource "*.dfm" TForm1 * Form1;
__fastcall TForm1::TForm1( TComponent * Owner ) : TForm( Owner ) { }
void __fastcall TForm1::Button1Click( TObject * Sender ) { int tmp = TabControl1->Tabs->Count; TabControl1->Tabs->Add( "Zakladka " + IntToStr( tmp ) ); MemoTab.push_back( new TMemo( this ) ); MemoTab[ tmp ]->Parent = TabControl1; MemoTab[ tmp ]->Align = alClient; TabControl1->TabIndex = tmp; for( int i = 0; i < MemoTab.size(); i++ ) { MemoTab[ i ]->Visible = false; } MemoTab[ tmp ]->Visible = true; }
void __fastcall TForm1::TabControl1Change( TObject * Sender ) { for( int i = 0; i < MemoTab.size(); i++ ) { MemoTab[ i ]->Visible = false; } MemoTab[ TabControl1->TabIndex ]->Visible = true; }
#ifndef Unit1H #define Unit1H
#include <Classes.hpp> #include <Controls.hpp> #include <StdCtrls.hpp> #include <Forms.hpp> #include <ComCtrls.hpp> #include <vector>
class TForm1 : public TForm { __published: TTabControl * TabControl1; TButton * Button1; void __fastcall Button1Click( TObject * Sender ); void __fastcall TabControl1Change( TObject * Sender ); private: public: __fastcall TForm1( TComponent * Owner ); std::vector < TMemo *> MemoTab; };
extern PACKAGE TForm1 * Form1;
#endif
Dużo tego nie ma, na trudne też nie wygląda (bo nie jest :P). Wytłumacz się teraz :P |
|
DVD93 Temat założony przez niniejszego użytkownika |
» 2011-12-17 17:49:00 Bardzo dziękuje za pomoc ;D w końcu działa ;D już wcześniej próbowałem tworzyć nowe Memo na każdą zakładkę za pomocą kodu tego typu; TMemo * Memo1; Memo1 = new TMemo( this ); Memo1->Parent = this; Memo1->Left = 50; Memo1->Top = 50;
Ale nie działało za dobrze dlatego porzuciłem ten pomysł. |
|
akwes |
» 2011-12-17 18:34:58 1. Trzeba mieć listę stworzonych TMemo. Jeżeli to co podałeś to cały kod, to zaraz po wyjściu z funkcji wskaźnik na memo się mazał, a TMemo w pamięci pozostawało i nam robiło wyciek pamięci. 2. Parent musi być tym komponentem na którym ma się nam ukazać. Czyli jak ma być w ttabcontrol to nie dajemy mu jako rodzica formy.
No, cieszę się że pomogło :P
Jeżeli poza TMemo chcesz mieć coś na zakładce mieć to radzę wtedy zastosować TPanel. Czyli zrobić też listę TPaneli, jako Parent dla każdego zestawu (czyli TMemo i co tam jeszcze chcesz mieć) ustawiasz rodzica na TPanel, i TPanelowi rodzica na TTabControl. Wtedy ukrywanie wszystkich komponentów na karcie ograniczy się do ukrywania Panelu - wygoda.
A wygląd TPanelu da się dostosować tak żeby go nie było widać. |
|
1 « 2 » |