Dialogresource mit PB 3.94 nutzen

Hier könnt Ihr gute, von Euch geschriebene Codes posten. Sie müssen auf jeden Fall funktionieren und sollten möglichst effizient, elegant und beispielhaft oder einfach nur cool sein.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

FloHimself hat geschrieben:hast du dir die rebar mal angeschaut?
Angeschaut schon, aber noch nicht umgesetzt. Ich überlege die ganze Zeit, wie man das ganze vereinfachen kann, als UserLib. Aber irgendwie fällt mir kein sinnvoller Weg ein. Aber das AHA wird noch kommen :mrgreen:

//Nachtrag: Hab den Source nochmals etwas beschönigt :D indem ich Enumeration verwende. Das kommt davon wenn man die Vorlage 1:1 übersetzt. Selber link
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
FGK
Beiträge: 249
Registriert: 09.01.2005 14:02
Computerausstattung: i5-4430 CPU / 8GB RAM
GeForce GT630
Windows 10 Home / 64-bit
Wohnort: Augsburg

Beitrag von FGK »

@flo / @ts-soft

Auf die Anregung hin wir sollten zu mehr UserDefControls noch
Beispiele machen hab ich mir mal das RAGrid angesehen.
Komm noch nicht so 100% klar mit ihm da es sehr dünn dokumentiert
ist. Aber ev. könnt ihr mir ja dabei helfen.
Ach ja die Sache mit der Datenbefüllung von DialogElementen hab ich
auch angefangen - bin aber noch nicht so richtig glücklich damit.

Bild

Die Sourcen gibts hier http://home.tiscali.de/pbsource/pb_stuf ... idDemo.zip

Gruß

FGK

[EDIT] UPDATE! Bin dem RAGrid auf der Spur. Die ASM-Sourcen geben nach einiger Einlesezeit doch recht gut Aufschluß. Datenbefüllung funktioniert und durch Klick auf die Header kann sortiert werden. Werde
noch weiter dran arbeiten - eigentlich sollte man das schnuckelige Ding als Gadget in PB aufnehmen. Was denkt ihr?
Zuletzt geändert von FGK am 01.10.2005 21:41, insgesamt 1-mal geändert.
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

@FGK
Dein Link ist Tod :(
Wenn Du möchtest, schick mir die Datei als Anhang per Mail, kriegste dann nen link von mir. Meine Mail findeste auf meiner HP im Impressum. Die unterderbruecke funzt :D , aber nur wenn ich möchte.

//Edit: jetzt geht es doch :D
//Edit2: RAGrid hab ich garnicht, ist in CustomControls nicht bei :freak:
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
FloHimself
Beiträge: 338
Registriert: 05.09.2004 18:47

Beitrag von FloHimself »

ts-soft hat geschrieben: //Edit2: RAGrid hab ich garnicht, ist in CustomControls nicht bei :freak:
Die anderen CustomControls sind bei RadASM dabei.


@FGK
:allright: jetzt noch die anderen? :P
FloHimself
Beiträge: 338
Registriert: 05.09.2004 18:47

Beitrag von FloHimself »

@FGK
sieht super aus!
[EDIT] UPDATE! Bin dem RAGrid auf der Spur. Die ASM-Sourcen geben nach einiger Einlesezeit doch recht gut Aufschluß. Datenbefüllung funktioniert und durch Klick auf die Header kann sortiert werden. Werde
noch weiter dran arbeiten - eigentlich sollte man das schnuckelige Ding als Gadget in PB aufnehmen. Was denkt ihr?
dann am besten die .lib version!? bisher benutzt du auch die DLL oder?
Benutzeravatar
ts-soft
Beiträge: 22292
Registriert: 08.09.2004 00:57
Computerausstattung: Mainboard: MSI 970A-G43
CPU: AMD FX-6300 Six-Core Processor
GraKa: GeForce GTX 750 Ti, 2 GB
Memory: 16 GB DDR3-1600 - Dual Channel
Wohnort: Berlin

Beitrag von ts-soft »

FloHimself hat geschrieben:@FGK
sieht super aus!
[EDIT] UPDATE! Bin dem RAGrid auf der Spur. Die ASM-Sourcen geben nach einiger Einlesezeit doch recht gut Aufschluß. Datenbefüllung funktioniert und durch Klick auf die Header kann sortiert werden. Werde
noch weiter dran arbeiten - eigentlich sollte man das schnuckelige Ding als Gadget in PB aufnehmen. Was denkt ihr?
dann am besten die .lib version!? bisher benutzt du auch die DLL oder?
Wäre doch ne Sache für Deine FASM_modded.exe :wink:

Nachtrag: Damit die Demo läuft, mußte ich in der Resource den kompletten Pfad zur BMP angeben (mit ""). In jaPBe ist dies nicht nötig!!!
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
Bild
Benutzeravatar
FGK
Beiträge: 249
Registriert: 09.01.2005 14:02
Computerausstattung: i5-4430 CPU / 8GB RAM
GeForce GT630
Windows 10 Home / 64-bit
Wohnort: Augsburg

Beitrag von FGK »

@flo

ja ich nutze die DLL da ich nicht weis wie ich die Lib-Version benutzen muß. Vorschläge dazu?



Gruß FGK



PS: Userlib schon sehr weit gediehen aber halt DLL...
FloHimself
Beiträge: 338
Registriert: 05.09.2004 18:47

Beitrag von FloHimself »

ts-soft hat geschrieben:Wäre doch ne Sache für Deine FASM_modded.exe :wink:
geht sogar.

Code: Alles auswählen

Goto END_DRCTIVE 
;!include 'PROC32.INC'
!extrn _GridInstall@4
!section '.drectve' drectve hidden 
!DB 'RAGrid.lib ' 
!section '.text' code readable executable 
END_DRCTIVE:

IncludeFile "..\res\rsrc.pbi"
IncludeFile "RAGrid.pbi"

Structure ROWDATA 
  lpszName.l 
  Entry00.l
  Entry01.l
  Entry02.l
  Image.l
EndStructure
 
Procedure SetupGridData(hDlg.l)
  SendDlgItemMessage_(hDlg,#IDC_GRD1, #GM_SETBACKCOLOR, $C0C0C0, 0) 
  SendDlgItemMessage_(hDlg,#IDC_GRD1, #GM_SETGRIDCOLOR, $000000, 0) 
  SendDlgItemMessage_(hDlg,#IDC_GRD1, #GM_SETTEXTCOLOR, $800000, 0) 
  SendDlgItemMessage_(hDlg,#IDC_GRD1, #GM_SETHDRHEIGHT, 0, 24) 
  col.COLUMN 
  col\ColumnWidth = 150
  col\Headertext = @"Name" 
  col\HeaderAlign = #GA_ALIGN_CENTER 
  col\Columnalign = #GA_ALIGN_LEFT 
  col\ColumnType = #TYPE_EDITTEXT
  col\ColumnMaxTextLen = 31 
  col\FormatString = 0 
  col\HndImgList = 0 
  col\HeaderFlag = 0 
  SendDlgItemMessage_(hDlg,#IDC_GRD1, #GM_ADDCOL, 0, @col) 
  col\ColumnWidth = 60
  For i = 0 To 2
    col\ColumnWidth = 115 
    col\ColumnType = i
    HdCaption.s="#"+Str(i)
    col\Headertext = @HdCaption 
    SendDlgItemMessage_(hDlg,#IDC_GRD1, #GM_ADDCOL, 0, @col) 
  Next i
  himl = ImageList_Create_(15,15,#ILC_COLOR24|#ILC_MASK,8,8)
  hbm= LoadBitmap_(GetModuleHandle_(0),#IDB_BITMAP)
  ImageList_AddMasked_(himl,hbm,$0FFFFFF)
  DeleteObject_(hbm)
  col\ColumnMaxTextLen = 0 
  col\Columnalign = #GA_ALIGN_CENTER 
  col\ColumnWidth = 40
  col\ColumnType = #TYPE_IMAGE
  col\FormatString=0
  col\Headertext = #Null  ;@"#3" 
  col\HndImgList = himl
  col\HeaderFlag = 0
  SendDlgItemMessage_(hDlg,#IDC_GRD1, #GM_ADDCOL, 0, @col) 

  rowcol.ROWCOLOR
  rowcol\BackColor=$0802010
  rowcol\TextColor=$0FFFFFF
  row.ROWDATA
  row\Entry00 = #Null
  row\Entry02 = #Null
  
  For i = 0 To 24
    Name.s="Name #"+RSet(Str(i),2,"0")
    row\lpszName=@Name
    row\Entry01 = i+Random(1000)
    row\Image = (row\Image +1) %8
    rowcol\BackColor=rowcol\BackColor+$0000404
    SendDlgItemMessage_(hDlg,#IDC_GRD1, #GM_ADDROW, 0,@row) 
    SendDlgItemMessage_(hDlg,#IDC_GRD1, #GM_SETROWHEIGHT, 0, 24) 
    SendDlgItemMessage_(hDlg,#IDC_GRD1, #GM_SETROWCOLOR,i,@rowcol)
  Next i 
EndProcedure

Procedure GetResDialog(DialogId.l, *DialogProcedure.l, hParent.l) 
  ProcedureReturn DialogBoxParam_(GetModuleHandle_(0), DialogId, 0, *DialogProcedure, hParent) 
EndProcedure 

Procedure MainDlgProc(hDlg, uMsg, wParam, lParam) 
  result = #PB_ProcessPureBasicEvents 
  Select uMsg 
    Case #WM_INITDIALOG 
      SetupGridData(hDlg)
      MessageBeep_(#MB_ICONINFORMATION)
    Case #WM_SIZE
    Case #WM_NOTIFY
      hGrid=GetDlgItem_(hDlg,#IDC_GRD1)
      *gn.GRIDNOTIFY = lParam ; now the structure members hold the necessary data 
      If *gn\nmhdr\hwndFrom = hGrid
        Select *gn\nmhdr\code
          Case #GN_HEADERCLICK
            SendDlgItemMessage_(hDlg,#IDC_GRD1,#GM_COLUMNSORT,*gn\col,#SORT_INVERT)
        EndSelect
      EndIf  
    Case #WM_MOUSEMOVE 
      SetWindowText_(hDlg, "X: "+Str(lParam&$FFFF)+", Y: "+Str(lParam>>16)) 
    Case #WM_CLOSE 
      EndDialog_(hDlg, 0) 
    Case #WM_COMMAND
      id = wParam & $FFFF
      Select id
        Case #IDC_BTN1
          EndDialog_(hDlg, #IDC_BTN1)
      EndSelect
  EndSelect
  ;ProcedureReturn result 
EndProcedure 

hInstance.l = GetModuleHandle_(0)
!pushd [v_hInstance]
!CALL _GridInstall@4

GetResDialog(#IDD_DLG1, @MainDlgProc(), 0)
dafür wird zum modifizierten fasm noch eine modifizierte RAGrid.lib
benötigt. -> http://rzserv2.fhnon.de/~lg016586/downl ... RAGrid.lib
warum: die DLL benutzt als ClassName für RegisterClassEx "RAGrid"
(somit auch ResEd) und die lib "MyRAGrid". da der ClassName in der
resource auftaucht, müssen diese übereinstimmen.
ts-soft hat geschrieben: Nachtrag: Damit die Demo läuft, mußte ich in der Resource den kompletten Pfad zur BMP angeben (mit ""). In jaPBe ist dies nicht nötig!!!
da hab ich ne weile gebraucht ;)
FGK hat geschrieben: ja ich nutze die DLL da ich nicht weis wie ich die Lib-Version benutzen muß. Vorschläge dazu?
womit erstellst du die lib?

/EDIT:
"!include 'PROC32.INC'" auskommentiert. war wohl noch vom testen im
source. ;)
Benutzeravatar
FGK
Beiträge: 249
Registriert: 09.01.2005 14:02
Computerausstattung: i5-4430 CPU / 8GB RAM
GeForce GT630
Windows 10 Home / 64-bit
Wohnort: Augsburg

Beitrag von FGK »

@flo

Wieso Lib erstellen? Ich würde die Lib benutzen die auch bei dem
RAGrid Quellcode mitdabei ist.
Vom Prinzip her stell ich mir das so vor - Lib mit in die Userlib linken
und dann aus dem Speicher heraus nutzen um die OpenLibrary zu umgehen und das vorhanden sein der DLL zu umgehen - oder nicht?

Gruß

FGK
FloHimself
Beiträge: 338
Registriert: 05.09.2004 18:47

Beitrag von FloHimself »

[...]mit in die Userlib linken[...]
ich meinte, womit erstellst du deine userlib?

Ich würde die Lib benutzen die auch bei dem
RAGrid Quellcode mitdabei ist.
wir müssen aber den ClassName vorher ändern.

der von dir geschilderte, ist wohl der einfachste weg.
Antworten