TMS Komponenten
-
Hallo Leute...
Ich versuche verzweifelt herauszubekommen wie ich die Komponenten von TMS-Software im C++ Builder benutzen kann.
Die Doku ist voll für den Ar*** (Sorry wegen der harten ausdruckweise)
Kenn sich jemand damit aus oder kann mir jemand eine Alternative nennen die besser Dokumentiert ist?
Ich bin noch relativ neu im Bereich C++ (erst 1 Schuljahr)...
In erster Linie geht es darum die Komponente AdvCardList zu benutzen. Leider sind nur beispiele für Delphi vorhanden...
Hier der Demo-Quellcode:
{***************************************************************************} { TAdvCardList sample application } { } { written by TMS Software } { copyright © 2005 } { Email : info@tmssoftware.com } { Web : http://www.tmssoftware.com } {***************************************************************************} unit UAdvCardListDemo; interface uses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, AdvCardList, StdCtrls, AdvCardListStyler, JPEG, ExtCtrls {$IFDEF VER150} , XPMan {$ENDIF} {$IFDEF VER170} , XPMan {$ENDIF} ; type TForm1 = class(TForm) AdvCardList1: TAdvCardList; Button1: TButton; AdvCardListStyler1: TAdvCardListStyler; Panel1: TPanel; ComboBox1: TComboBox; CheckBox1: TCheckBox; Label1: TLabel; CheckBox2: TCheckBox; ComboBox2: TComboBox; Label2: TLabel; procedure FormCreate(Sender: TObject); procedure ComboBox1Change(Sender: TObject); procedure CheckBox1Click(Sender: TObject); procedure CheckBox2Click(Sender: TObject); procedure ComboBox2Change(Sender: TObject); private { Private declarations } public { Public declarations } procedure AddCard(ACaption, AType, AWeb:string; APrice: Integer; AImage:string; ADate: TDateTime; Avail: Boolean); end; var Form1: TForm1; implementation {$R carddemo.res} {$R *.dfm} procedure TForm1.AddCard(ACaption, AType, AWeb: string; APrice: Integer; AImage: string; ADate: TDateTime; Avail: Boolean); var ac: TAdvCard; ms: TMemoryStream; reshandle: THandle; hglobal: THandle; ptr: Pointer; ressize: integer; JPEGImage: TJPEGImage; begin ac := AdvCardList1.Cards.Add; ac.Caption := ACaption; ac.ItemList[0].AsString := AType; ac.ItemList[1].AsString := AWeb; ac.ItemList[2].AsInteger := APrice; if AImage <> '' then begin reshandle := FindResource(hinstance, PChar(AImage), PChar(RT_RCDATA)); if reshandle <> 0 then begin hglobal := LoadResource(hinstance, reshandle); ms := TMemoryStream.Create; try ressize := SizeOfResource(hinstance, reshandle); ptr := LockResource(hglobal); ms.WriteBuffer(ptr^,ressize); ms.Position := 0; JPEGImage := TJPEGImage.Create; try JPEGImage.LoadFromStream(ms); ac.ItemList[3].Picture.Assign(JPEGImage); finally JPEGImage.Free; end; finally FreeResource(reshandle); ms.Free; end; end; end; ac.ItemList[4].AsDate := ADate; ac.ItemList[5].AsBoolean := Avail; end; procedure TForm1.FormCreate(Sender: TObject); begin // load cards AdvCardList1.BeginUpdate; AddCard('Mercedes','SLK','www.mbusa.com',50,'slk',encodedate(2004,10,1),true); AddCard('Mercedes','SLR','www.mbusa.com',450,'slr',encodedate(2004,6,1),true); AddCard('Mercedes','SL','www.mbusa.com',150,'sl',encodedate(2001,11,1),false); AddCard('Mercedes','CL','www.mbusa.com',140,'cl',encodedate(2000,4,1),false); AddCard('Porsche','911','www.porsche.com',120,'p911',encodedate(1997,8,1),false); AddCard('Porsche','Boxster','www.porsche.com',120,'boxster',encodedate(1997,8,1),false); AddCard('BMW','M3','www.bmw.com',95,'m3',encodedate(2003,2,1),true); AddCard('BMW','645','www.bmw.com',135,'b645',encodedate(2004,9,1),false); AddCard('BMW','Z4','www.bmw.com',75,'z4',encodedate(2004,3,1),false); AddCard('Aston Martin','DB9','www.astonmartin.com',175,'db9',encodedate(2003,2,1),true); AddCard('Ferrari','355','www.ferrari.it',275,'f355',encodedate(1996,2,1),true); AdvCardList1.EndUpdate; // present horizontal scrollbar AdvCardList1.LeftCol := 0; end; procedure TForm1.ComboBox1Change(Sender: TObject); begin case combobox1.itemindex of 0: Advcardlist1.SortSettings.SortType := stCaption; 1,2,3: begin Advcardlist1.SortSettings.SortIndex := combobox1.itemindex - 1; Advcardlist1.SortSettings.SortType := stItem; end; 4,5: begin AdvCardList1.SortSettings.SortIndex := combobox1.itemindex; AdvCardList1.SortSettings.SortType := stItem; end; end; AdvCardList1.LeftCol := 0; end; procedure TForm1.CheckBox1Click(Sender: TObject); begin AdvCardList1.MultiSelect := checkbox1.Checked; end; procedure TForm1.CheckBox2Click(Sender: TObject); begin AdvCardList1.CardHoverAppearance.Enabled := checkbox2.Checked; end; procedure TForm1.ComboBox2Change(Sender: TObject); begin AdvCardListStyler1.Style := TAdvCardListStyle(combobox2.ItemIndex); end; end.
Im vorhinein schon mal vielen Dank!
mfg
Florian
-
Na komm, der Delphi-Text ist doch nicht wirklich schwer zu lesen. Fang einfach mal an mit der Umsetzung, wir helfen dann weiter.
Tip für den Einstieg: Das Laden des Bildes aus der Resource (Zeilen 61-66,74-98) kannst du erstmal weglassen, ItemList[3] bleibt einfach leer.
-
Das geht schonmal:
AdvCardList1 -> Cards -> Add() -> Caption = "Karte 1"; AdvCardList1 -> Cards -> Add(); AdvCardList1 -> Cards -> Items[1] -> Caption = "Karte 2";
2 Verschiedene wege um Karten und zuordnungen zu erstellen...
Meiner meinung nach geht das so:
AdvCardList1 -> Cards -> Items[0] -> ItemList[0] -> Value = "Test";
oder so:
AdvCardList1 -> Cards[0] -> Items -> ItemList[0] -> Value = "Test";
Ich hab zwar noch viel mehr ausprobiert aber jedesmal spring er in die zeile und sagt:
[C++ Fehler] uMain.cpp(73): E2288 Zeiger auf Struktur auf linker Seite von -> oder von ->* erforderlich
Langsam weiß nich nicht mehr was ich noch probieren soll um die Values zur laufzeit zuzuweisen...
-
Ungetestet, nur umgeformte Syntax:
void __fastcall TForm1::AddCard(AnsiString ACaption, AnsiString AType, AnsiString AWeb, int APrice, AnsiString AImage, TDateTime ADate, bool Avail) { TAdvCard *ac = AdvCardList1->Cards->Add(); ac->Caption = "bla"; ac->ItemList[0]->AsString = "blub"; ... ac->ItemList[5]->AsBoolean = Avail; } void __fastcall TForm1::FormCreate(TObject *Sender) { // load cards AdvCardList1->BeginUpdate(); AddCard("Mercedes", "SLK", "www.mbusa.com", 50, "slk", EncodeDate(2004,10,1), true); AdvCardList1->EndUpdate(); // present horizontal scrollbar AdvCardList1->LeftCol = 0; }
-
Vielen Dank für die schnelle Antwort...
Leider konnte ich es erst heute ausprobieren.Hat leider nicht ganz so funktioniert...
Falls es jemanden interessiert oder jemand das gleiche problem hat:void __fastcall AddCard(AnsiString AName, AnsiString AVorname, AnsiString AStrasse, AnsiString AHausnr, AnsiString APLZ, AnsiString AOrt, AnsiString ATel, AnsiString AHandy, AnsiString AICQ, AnsiString AStatus) { TAdvCard *ac = frmMain -> AdvCardList1->Cards->Add(); ac -> Caption = AName + ", " + AVorname; ac -> ItemList -> Items[0] -> AsString = AStrasse + " " + AHausnr; ac -> ItemList -> Items[1] -> AsString = APLZ + " " + AOrt; ac -> ItemList -> Items[2] -> AsString = ATel; ac -> ItemList -> Items[3] -> AsString = AHandy; ac -> ItemList -> Items[4] -> AsString = AICQ; ac -> ItemList -> Items[5] -> AsString = AStatus; } AdvCardList1->BeginUpdate(); AddCard("DeinNachname","DeinVorname","DeineStrasse","DeineHausnummer","DeinePLZ","DeineStadt","DeineTelefonnummer","DeineHandynummer","DeineICQ_Nummer","DeinStatus"); AdvCardList1->EndUpdate(); AdvCardList1->LeftCol = 0;
Getestet mit Borland C++ Builder 5 Pro
mfg Skytrance