program QRefList2;
uses
QForms,
RefForm in 'RefForm.pas' ,
NewDial in 'NewDial.pas' ;
begin
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TFormItem, FormItem);
Application.Run;
end.
|
unit RefForm;
interface
uses
SysUtils, Qt, Classes, QGraphics, QControls, QForms, QDialogs,
QComCtrls, QMenus, QImgList, QTypes;
type
TForm1 = class(TForm)
ListView1: TListView;
MainMenu1: TMainMenu;
File1: TMenuItem;
Exit1: TMenuItem;
View1: TMenuItem;
List1: TMenuItem;
Details1: TMenuItem;
Help1: TMenuItem;
About1: TMenuItem;
N1: TMenuItem;
CheckBoxes1: TMenuItem;
ImagesLarge: TImageList;
ImagesSmall: TImageList;
AddItem1: TMenuItem;
N2: TMenuItem;
procedure FormCreate(Sender: TObject);
procedure List1Click(Sender: TObject);
procedure Details1Click(Sender: TObject);
procedure Exit1Click(Sender: TObject);
procedure About1Click(Sender: TObject);
procedure CheckBoxes1Click(Sender: TObject);
procedure ListView1ColumnClick(Sender: TObject; Column: TListColumn);
procedure ListView1Compare(Sender: TObject; Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
procedure FormDestroy(Sender: TObject);
procedure AddItem1Click(Sender: TObject);
procedure ListView1ItemDoubleClick(Sender: TObject; Item: TListItem);
public
private
nSortCol: Integer;
end;
var
Form1: TForm1;
implementation
uses NewDial;
procedure TForm1.FormCreate(Sender: TObject);
var
List: TStringList;
NewItem: TListItem;
I: Integer;
begin
NewItem := nil;
ListView1.Items.Clear;
List := TStringList.Create;
try
List.LoadFromFile (
ExtractFilePath (Application.ExeName) + 'Items.txt');
for I := 0 to List.Count - 1 do
if List [I][1] = #9 then
NewItem.SubItems.Add (Trim (List [I]))
else if List [I][1] = '@' then
NewItem.ImageIndex := StrToIntDef (List [I][2], 0)
else
begin
NewItem := ListView1.Items.Add;
NewItem.Caption := List [I];
end;
finally
List.Free;
end;
end;
procedure TForm1.List1Click(Sender: TObject);
begin
ListView1.ViewStyle := vsList;
List1.Checked := True;
end;
procedure TForm1.Details1Click(Sender: TObject);
begin
ListView1.ViewStyle := vsReport;
Details1.Checked := True;
end;
procedure TForm1.Exit1Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.About1Click(Sender: TObject);
begin
MessageDlg ('Reference List (ListView example)' +
#13'from "Mastering Delphi"'#13'author: Marco Cant�' ,
mtInformation, [mbOk], 0);
end;
procedure TForm1.CheckBoxes1Click(Sender: TObject);
begin
ListView1.Checkboxes :=
not ListView1.Checkboxes;
CheckBoxes1.Checked :=
not CheckBoxes1.Checked;
end;
procedure TForm1.ListView1ColumnClick(Sender: TObject;
Column: TListColumn);
begin
nSortCol := Column.Index;
ListView1.AlphaSort;
end;
procedure TForm1.ListView1Compare(Sender: TObject;
Item1, Item2: TListItem;
Data: Integer; var Compare: Integer);
begin
if nSortCol = 0 then
Compare := CompareStr (Item1.Caption, Item2.Caption)
else
Compare := CompareStr (Item1.SubItems [nSortCol - 1],
Item2.SubItems [nSortCol - 1]);
end;
procedure TForm1.FormDestroy(Sender: TObject);
var
I, J: Integer;
List: TStringList;
begin
List := TStringList.Create;
try
for I := 0 to ListView1.Items.Count - 1 do
begin
List.Add (ListView1.Items[I].Caption);
List.Add ('@' + IntToStr (ListView1.Items[I].ImageIndex));
for J := 0 to ListView1.Items[I].SubItems.Count - 1 do
List.Add (#9 + ListView1.Items[I].SubItems [J]);
end;
List.SaveToFile (
ExtractFilePAth (Application.ExeName) + 'Items.txt');
finally
List.Free;
end;
end;
procedure TForm1.AddItem1Click(Sender: TObject);
var
NewItem: TListItem;
begin
FormItem.Caption := 'New Item';
FormItem.Clear;
if FormItem.ShowModal = mrOK then
begin
NewItem := ListView1.Items.Add;
NewItem.Caption := FormItem.EditReference.Text;
NewItem.ImageIndex := FormItem.ComboType.ItemIndex;
NewItem.SubItems.Add (FormItem.EditAuthor.Text);
NewItem.SubItems.Add (FormItem.EditCountry.Text);
end;
end;
procedure TForm1.ListView1ItemDoubleClick(Sender: TObject;
Item: TListItem);
begin
if ListView1.Selected <> nil then
begin
FormItem.Caption := 'Edit Item';
FormItem.EditReference.Text := ListView1.Selected.Caption;
FormItem.ComboType.ItemIndex := ListView1.Selected.ImageIndex;
FormItem.EditAuthor.Text := ListView1.Selected.SubItems [0];
FormItem.EditCountry.Text := ListView1.Selected.SubItems [1];
if FormItem.ShowModal = mrOK then
begin
ListView1.Selected.Caption := FormItem.EditReference.Text;
ListView1.Selected.ImageIndex := FormItem.ComboType.ItemIndex;
ListView1.Selected.SubItems [0] := FormItem.EditAuthor.Text;
ListView1.Selected.SubItems [1] := FormItem.EditCountry.Text;
end;
end;
end;
end.
|
unit NewDial;
interface
uses
Qt, SysUtils, Classes, QGraphics, QControls, QForms, QDialogs,
QStdCtrls, QButtons;
type
TFormItem = class(TForm)
EditReference: TEdit;
EditAuthor: TEdit;
EditCountry: TEdit;
ComboType: TComboBox;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
private
public
procedure Clear;
end;
var
FormItem: TFormItem;
implementation
procedure TFormItem.Clear;
var
I: Integer;
begin
for I := 0 to ControlCount - 1 do
if Controls [I] is TEdit then
TEdit (Controls[I]).Text := '';
end;
end.
|