New topic: 

Custom classes interacting with each other

<http://forums.realsoftware.com/viewtopic.php?t=47562>

         Page 1 of 1
   [ 3 posts ]                 Previous topic | Next topic          Author  
Message        wedgesan          Post subject: Custom classes interacting with 
each otherPosted: Thu Apr 11, 2013 2:33 am                         
Joined: Wed Mar 06, 2013 4:25 am
Posts: 4                I'm using a custom class to deal with database 
management, and in order to handle errors i'm calling a method that opens a 
dialog box.

Class DDBBManagement
  sub MyMethodToCallDialogBox (<several parameters here>)
  code to open a DialogBox


I've also coded a custom dialog box. It does nothing fancy, just a little 
prettier than the standard dialog box.
In order to use it with my custom database class, I've subclassed it, and 
overrided the dialog method:

Class DDBBManagementEnhanced subclass of DDBBManagement
  sub MyMethodToCallDialogBox (<several parameters here>)
  code to open my Custom dialog box


It works, but I wonder if there's a more elegant way to achieve this. Any ideas?

Thank you very much. Best regards.   
                             Top                simulanics          Post 
subject: Re: Custom classes interacting with each otherPosted: Thu Apr 11, 2013 
8:15 am                                 
Joined: Sun Aug 12, 2007 10:10 am
Posts: 1041
Location: Boiling Springs, SC                wedgesan wrote:I'm using a custom 
class to deal with database management, and in order to handle errors i'm 
calling a method that opens a dialog box.

Class DDBBManagement
  sub MyMethodToCallDialogBox (<several parameters here>)
  code to open a DialogBox


I've also coded a custom dialog box. It does nothing fancy, just a little 
prettier than the standard dialog box.
In order to use it with my custom database class, I've subclassed it, and 
overrided the dialog method:

Class DDBBManagementEnhanced subclass of DDBBManagement
  sub MyMethodToCallDialogBox (<several parameters here>)
  code to open my Custom dialog box


It works, but I wonder if there's a more elegant way to achieve this. Any ideas?

Thank you very much. Best regards.

In the RSDS Library (Download) I believe there are 6-7 custom dialogs...load 
the software, choose "snippet" for category, enter "dialog" in the search 
field, and press enter  

Here is a copy paste example from the library...

1. make a global method called MessageDialog in your APP class

2. Call it anywhere you like in your app
App.MessageDialog(App.ExecutableFile.Name,"Error: Testing Msg....","Msg 
Tested",1,"","", False)

Sub MessageDialog(Title As String, Message As String , Explanation As String , 
GraphicIcon As Integer , ActionCaption As String ="OK" , CancelCaption As 
String ="Cancel", CancelButton As Boolean)
  
  '0 - GraphicNote (The application icon on Mac OS X)
  '1 - GraphicCaution triangle (On Mac OS X, the application icon superimposed 
on the caution triangle)
  '2 - GraphicStop (On Mac OS X 10.3 and above, the application icon)
  '3 - GraphicQuestion icon (On Mac OS X 10.3 and above, it is the same as 0)
  
  Dim d as New MessageDialog
  Dim b as MessageDialogButton
  
  d.icon= GraphicIcon
  d.Title = Title
  d.ActionButton.Caption = ActionCaption
  d.CancelButton.Caption= CancelCaption
  d.CancelButton.Visible = CancelButton
  
  d.Message=Message
  d.Explanation=Explanation
  b=d.ShowModal
  
  'You can use the return type as a boolean or a string to see what the user 
pressed
  Select Case b
  Case d.ActionButton
  Speak "You Pressed OK"
  
  Case d.CancelButton
  Speak "You Pressed Cancel"
  End Select
End Sub
      
_________________
Matthew A. Combatti
Real Studio 2012 r1.2
Visit Real Studio Developer's Spot!
Systems I Use:
Windows XP/Windows Vista/Windows Server 2008 r2/Windows 7/Windows 8
Mac OSX 10.5/Mac OSX 10.6/Mac OSX Server/Ubuntu/Debian/Suse/Red Hat/
Windows Server 2011/CentOS 5.4 /ReactOS/SimOS
~All REAL Compatible~  
                             Top                wedgesan          Post subject: 
Re: Custom classes interacting with each otherPosted: Thu Apr 11, 2013 9:32 am  
                       
Joined: Wed Mar 06, 2013 4:25 am
Posts: 4                Thank you very much for your reply, simulaniacs, but 
I'd like to further explain what is what I'm trying to achieve

My point is: I call a standard dialog box from within my DDBB class and I want 
to make it so it can call a non standard dialog window (it doesn't matter if 
its my own dialog box or somebody's else).

There's two ways to acomplish this that I can think of:

-Replace all calls to the standard dialog box in my code, so it calls now the 
custom dialog box (This is the "no way" option)

-Having a centraliced method that calls the standard dialog box that you call 
whenever you need a dialog box and override/rewrite/youname it so it calls the 
new custom dialog box. 

This option is far more elegant, and it makes both my DDBB class and the custom 
dialog box independent of each other, so i can export them both to use in other 
projects, or I can use them both in the same project and benefit from both.

My implementation has this method within the DDBB class. Your idea is to make 
it global inside the app class, and I can see that it is so it can be called 
from anywhere inside the project. I was aiming to have my DDBB class portable, 
so it doesn't depend on having a "Sub MessageDialog" in the app.

I was wondering if there is a better way to do this. My way needs the method 
overriden to call a custom Dialog box, yours (if I'm not wrong) implies i'd 
have to rewrite the "MessageDialog Sub" to do the same. Seems like it's the way 
to go, isn't it?   
                             Top             Display posts from previous: All 
posts1 day7 days2 weeks1 month3 months6 months1 year Sort by AuthorPost 
timeSubject AscendingDescending          Page 1 of 1
   [ 3 posts ]      
-- 
Over 1500 classes with 29000 functions in one REALbasic plug-in collection. 
The Monkeybread Software Realbasic Plugin v9.3. 
http://www.monkeybreadsoftware.de/realbasic/plugins.shtml

[email protected]

Reply via email to