FotoBox1 Layout

FotoBox1 Layout

Nå får jeg muligens et lite problem, vil noen si. Det som står her i blogg-strømmen er jo omtrent det samme som finnes rundt omkring på sidene. Det får så være, men det som står her er alt mulig annet rusk og rask også, som f.eks. WordPress-tester (plugins). Jeg kommer sannsynligvis til å legge inn ideer og løsninger for bl.a Lightwave, men her i bloggstrømmen kommer alt helt ustrukturert etter hvert som jeg arbeider meg fremover.

Alt er skrevet i C++ og jeg bruker C++Builder fra RAD Studio (Embarcadero). Layout ved designtidspunkt ser slik ut:

Fotobox1 Layout

Jeg legger ut en TabControl, men foreløpig ingen Tab Items her, de lages ved runtime. Det har jeg gjort ved en ny klasse som er arvet fra TTabItem (jeg skal vise koden om litt).

Årsaken til dette er at den listboksen som vil forekomme på høyre side i programmet skal vise åpne objekter i hver enkelt tab. Jeg prøvde først å legge denne listboksen i hovedklassen, TForm1, men det ble litt komplisert ved at listboksen måtte cleares hver han man gikk inn i en ny tab med pekere frem og tilbake mellom TForm1 og dokumentklassen.

Bildet nedenfor viser hva jeg mener. Dette bildet er fra runtime hvor jeg har åpnet et bilde (av Gamlisen himself 🙂 ). På høyre side ser du her en listbox hvor navnet på åpne bilder settes inn samt visse taster for å skjule bildene, låse dem, osv. finnes.

Det er funksjoner som er tenkt implementert i neste versjon.

Alt dette lages ved File Open:

void __fastcall TForm1::menu_FILE_OPEN_Click(TObject *Sender)
{
	DocPage *NewItem;

	//Show Image files only
	OpenDialog1->Filter = TBitmapCodecManager::GetFilterString();

	if (OpenDialog1->Execute()) {

	try {

		// Add another Tab Item
		NewItem = new DocPage(TabControl1);
		NewItem->Parent = TabControl1;
		NewItem->Text = OpenDialog1->FileName;


		int maxTabs = TabControl1->TabCount;
		TabControl1->TabIndex = maxTabs-1;

		// Right frame containing Layer list, etc.
		NewItem->myFrame = new TFrame2(NewItem);
		NewItem->myFrame->Parent = NewItem;
		NewItem->myFrame->Width = 276;
		NewItem->myFrame->Align = TAlignLayout::Right;


		// 1. TFramedScrollBox
		NewItem->FramedScrollBox1 = new TFramedScrollBox(NewItem);
		NewItem->FramedScrollBox1->Parent = NewItem;
		NewItem->FramedScrollBox1->Align = TAlignLayout::Client;

		// 2. Layout1
		NewItem->Layout1 = new TLayout(NewItem->FramedScrollBox1);
		NewItem->Layout1->Parent = NewItem->FramedScrollBox1;
		NewItem->Layout1->Align = TAlignLayout::Center;

		// 3. Image1
		NewItem->Image1 = new TImage(NewItem->Layout1);
		NewItem->Image1->Parent = NewItem->Layout1;
		NewItem->Image1->Align =  TAlignLayout::Client;

		// Load From File into Image1
		NewItem->Image1->Bitmap->LoadFromFile(OpenDialog1->FileName);

		// Height and width
		NewItem->Layout1->Height = NewItem->Image1->Bitmap->Height;
		NewItem->Layout1->Width = NewItem->Image1->Bitmap->Width;


		// Add to Layer list
		TLayerItem *myLayerItem = new(TLayerItem);

		myLayerItem->FileName = new String (NewItem->Text);

		// Strip off short filename

		String Delimiters = _T("/\\");
		int ix = myLayerItem->FileName->LastDelimiter( Delimiters);
		ix += 1;

		// cheating a little, saying 30 characters as max length :-)
		myLayerItem->ShortName = new String(myLayerItem->FileName->SubString(ix, 30));

		myLayerItem->LayerName = myLayerItem->ShortName;
		myLayerItem->ElementType = File;
		myLayerItem->LayerFilter = 0;
		myLayerItem->Enabled = True;
		myLayerItem->LayerBitmap =  NewItem->Image1->Bitmap;

		NewItem->LayerList.push_back(myLayerItem);
		NewItem->myFrame->LayerListBox1->Items->Add(*myLayerItem->ShortName);
		NewItem->myFrame->TabControl2->ActiveTab = NewItem->myFrame->Layers;
		NewItem->myFrame->TabControl2->TabIndex = 0;
		//NewItem->myFrame->TabControl2->Tabs[2]->Enabled = False;

		//Enable Menu Items after Open File
		int iret = DisableEnableMenuItems(TRUE);

		}
	catch (...) {
		 ShowMessage(" Error from File Open");
		}

	}
}

Slik det er nå i denne versjonen, vil det lages en ny tab-side hver gang man åpner et bilde. Dette er selvfølgelig ikke godt nok i neste versjon. Da skal det være muligheter for flere åpne bilder i hver tab og kunne flytte disse frem og tilbake på siden f.eks.

Legg igjen en kommentar

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

Dette nettstedet bruker Akismet for å redusere spam. Lær om hvordan dine kommentar-data prosesseres.