May 04, 2024, 08:15:19 AM

News:

IonicWind Snippit Manager 2.xx Released!  Install it on a memory stick and take it with you!  With or without IWBasic!


Listview program

Started by Rock Ridge Farm (Larry), January 06, 2006, 06:38:57 PM

Previous topic - Next topic

0 Members and 2 Guests are viewing this topic.

Rock Ridge Farm (Larry)

This is the beginning of my first Aroura Program.
It is almost what I want except I each list to be scrollable.


//OS Acct Admin System Viewer
//Larry Sikes 01/06/2005

//Compile as a WINDOWS target

struct NMLISTVIEW
{
def hwndFrom as unsigned int;
def idFrom as INT;
def code as INT;
    def iItem as INT;
    def iSubItem as INT ;
    def uNewState as unsigned int;
    def uOldState as unsigned int;
    def uChanged as unsigned int;
    def ptActionx as INT;
def ptActiony as INT;
    def lParam as INT;
}

#define LISTVIEW_1 1
#define LISTVIEW_2 2
#define LISTVIEW_3 3

class dlg:dialog
{
declare OnInitDialog(),int;
declare OnClose(),int;
declare OnNotify(int code,int nID,NMHDR *pnmhdr),int;
}

global sub main()
{
dlg d1;
d1.Create(0,0,520,470,0x80C80080,0,"OS Acct Admin System Viewer",0);
d1.AddControl(CTLISTVIEW,"",10,10,500,145,AWS_VISIBLE|ALVS_REPORT|AWS_BORDER|AWS_HSCROLL|AWS_VSCROLL,AWS_EX_CLIENTEDGE,LISTVIEW_1);
d1.AddControl(CTLISTVIEW,"",10,160,500,145,AWS_VISIBLE|ALVS_REPORT|AWS_BORDER|AWS_HSCROLL|AWS_VSCROLL,AWS_EX_CLIENTEDGE,LISTVIEW_2);
d1.AddControl(CTLISTVIEW,"",10,310,500,145,AWS_VISIBLE|ALVS_REPORT|AWS_BORDER|AWS_HSCROLL|AWS_VSCROLL,AWS_EX_CLIENTEDGE,LISTVIEW_3);

d1.DoModal();
return 0;
}

dlg::OnClose(),int
{
CloseDialog(1);
return true;
}

dlg::OnInitDialog(),int
{
/* Initialize any controls here */
CListView *pList1 = GetControl(LISTVIEW_1);
CListView *pList2 = GetControl(LISTVIEW_2);
CListView *pList3 = GetControl(LISTVIEW_3);

pList1->InsertColumn(0,"System Name");
pList1->InsertColumn(1,"Classification");
pList1->InsertColumn(2,"Cpu Type");
pList1->InsertColumn(3,"Last Update");
pList1->InsertItem(0,"Accounting");
pList1->SetItemText(0,1,"Certified");
PList1->SetItemText(0,2,"RS6000");
pList1->SetItemText(0,3,"01/01/2005");
pList1->InsertItem(1,"Personel");
pList1->SetItemText(1,1,"Not Certified");
PList1->SetItemText(1,2,"Intel");
pList1->SetItemText(1,3,"01/01/2005");
pList1->SetExtendedStyle(ALVS_EX_FLATSB|ALVS_EX_FULLROWSELECT|ALVS_EX_GRIDLINES|ALVS_EX_LABELTIP);


pList2->InsertColumn(0,"User ID");
pList2->InsertColumn(1,"    Home Dir    ");
pList2->InsertColumn(2,"    Shell    ");
pList2->InsertColumn(3,"  Comment  ");
pList2->InsertItem(0,"Fred");
pList2->SetItemText(0,1,"/home/fred");
pList2->InsertItem(1,"George");
pList2->SetItemText(1,1,"/export/home/george");
pList2->SetExtendedStyle(ALVS_EX_FLATSB|ALVS_EX_FULLROWSELECT|ALVS_EX_GRIDLINES|ALVS_EX_LABELTIP);

pList3->InsertColumn(0,"Column1");
pList3->InsertColumn(1,"Column2");
pList3->InsertItem(0,"Item 1");
pList3->SetItemText(0,1,"Sub Item 1");
pList3->InsertItem(1,"Item 2");
pList3->SetItemText(1,1,"Sub Item 2");
pList3->SetExtendedStyle(ALVS_EX_FLATSB|ALVS_EX_FULLROWSELECT|ALVS_EX_GRIDLINES|ALVS_EX_LABELTIP);
CenterWindow();
return true;
}

dlg::OnNotify(int code,int nID,NMHDR *pnmhdr),int
{
CListView *pList = GetControl(LISTVIEW_1);
if(code = LVNCOLUMNCLICK)
{
pList->SetColumnText(*(NMLISTVIEW)pnmhdr.iSubItem,"Clicked!");
}
return true;
}



Rock Ridge Farm (Larry)

That should read 'I need each list to be scrollable.'

Rock Ridge Farm (Larry)

Also, can buttons be added or should the listview reside in a main window that has the buttons?

Parker

January 06, 2006, 07:05:40 PM #3 Last Edit: January 06, 2006, 07:08:39 PM by Parker
If you want it to scroll you'll have to add more items.

To add buttons would require some hacks and end up really ugly since the listview wouldn't know you're using that space already. So I'd recommend putting any buttons you want outside the listview. However, checkboxes can be put in the listview.

Just for the concept, http://www.catch22.net/tuts/editbutton.asp tells you how to insert controls into other controls.

Edit: After looking at that tutorial, I see it adjusts the client area of the edit control, so it wouldn't require strange hacks, it just takes a bit of code to do.