Od razu mówię, że nie jestem zbyt dobry z C++, dopiero zaczynam z nim przygodę, więc proszę o wyrozumienie. Robię AutoRun do swojego pendrive, na którym są programy, a AutoRun przechowuje je w odpowiednich kategoriach. Więc tak: mam folder "Kategorie Programów", w tym folderze znajdują się odpowiednie kategorie, a w tych kategoriach odpowiednie programy. Więc najpierw wyszukuje kategorii w folderze "Kategorie Programów" i dodaje je do ListBoxa. I teraz po kliknięciu na ListBox, wybierając odpowiednią kategorię chcę, aby wyświetlały się programy, ale 1 program = 1xTPanel, 1xTLabel i kilka TButton (do instalacji itp.). A te programy znajdują się na ScrollBoxie. I teraz nie wiem jak się za to zbytnio zabrać. Najlepiej chyba będzie zrobić tablicę z lokalizacjami do programów i tablicę z obiektami. Coś próbowałem robić, ale nie za bardzo mi to wychodzi:
#include <vcl.h>
#pragma hdrstop
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TSearchRec Search;
TForm1 *Form1;
//---------------------------------------------------------------------------
// Wyswietlenie Kategorii
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
Form1->ListBox1->Items->Clear();
if (FindFirst(".\\Kategorie Programów\\*.*", faDirectory, Search) == 0)
{
do{
if(((Search.Attr & faDirectory) > 0) & (Search.Name != ".") & (Search.Name != ".."))
Form1->ListBox1->Items->Add(Search.Name);
}
while(FindNext(Search) == 0);
FindClose(Search);
}
}
// Wyswietlenie Programów
//---------------------------------------------------------------------------
void __fastcall TForm1::ListBox1Click(TObject *Sender)
{
String tab[100];
int i;
for (i=0;i<=ilosc_programów;i++) //skąd wziąć ilosc_programów?
{
TPanel *Panel_Programu;
Panel_Programu = new TPanel(this);
Panel_Programu->Parent=ScrollBox1;
Panel_Programu->Top = 8;
Panel_Programu->Left = 8;
Panel_Programu->Width = 665;
Panel_Programu->Height = 73;
Panel_Programu->Visible = true;
TLabel *Nazwa_Programu = new TLabel(this);
Nazwa_Programu->Parent=Panel_Programu;
Nazwa_Programu->Top =8;
Nazwa_Programu->Left = 0;
Nazwa_Programu->Width = 665;
Nazwa_Programu->Height = 25;
Nazwa_Programu->Visible = true;
Nazwa_Programu->Font->Name = "Calibri";
Nazwa_Programu->Font->Size = 16;
Nazwa_Programu->Alignment = taCenter;
Nazwa_Programu->Align = alTop;
for(int i=1;i<=6;i++)
{
TButton *Przycisk_Programu = new TButton(this);
Przycisk_Programu->Parent=Panel_Programu;
Przycisk_Programu->Top = 48;
Przycisk_Programu->Left = 12 + (i*110);
Przycisk_Programu->Width = 105;
Przycisk_Programu->Height = 25;
Przycisk_Programu->Visible = true;
Przycisk_Programu->Caption="napis_na_przycisku"; // Jak odwołać się do tych przycisków osobno, aby można było nadać im inne napisy??
}
}
if (FindFirst(".\\Kategorie Programów\\" + ListBox1->Items->Strings[ListBox1->ItemIndex] + "\\*.*", faDirectory, Search) == 0)
{
do{
if(((Search.Attr & faDirectory) > 0) & (Search.Name != ".") & (Search.Name != ".."))
{
for (i=0;i<=100;i++)
{
tab[i]=".\\Kategorie Programów\\" + ListBox1->Items->Strings[ListBox1->ItemIndex] + "\\" + Search.Name + "\\*.*";
Form1->ListBox3->Items->Add(tab[i]);
}
}
}
while(FindNext(Search) == 0);
FindClose(Search);
}
}
//---------------------------------------------------------------------------
Z góry dziękuje za pomoc.




różne 



