Jump to content

vbdavie

uniGUI Subscriber
  • Posts

    178
  • Joined

  • Last visited

  • Days Won

    6

Everything posted by vbdavie

  1. I cut/paste from the demo program program that I compiled. Library Version: 0.99.50.1189 I modified the TuniFrame called "umain" and stuck all my controls etc on it since it was free from a lot of stuff. All it had was an image. So, basically, I run the demo and the first thing I see on the right side of the treeview is my panel<tuniFrame> and then I start to test. Did you try my steps on YOUR system? Did you find that it worked as I described? Thanks Davie
  2. Huh, I just went back to review the problem and it is GONE. It now works as expected. My only change was to DITCH the stringgrid in favor of the DBGrid. WIerd. Let's pretend this never occured since now I can't reproduce it and my history folder only goes back to early in the morning and that version also worked. So, case-closed DAvie
  3. Farshad, the VCL that I use does NOT work that way. It works as expected. IE: When you have a TABVisible:=False and then TRUE, it does NOT change the active tab. Bugra, the version I am using is version 99.50.1189 It's fairly recent. Yet another difference that should be noted (in the VCL vs WebMode documentation), unless of course it gets fixed. Davie
  4. That's what I ended up doing. Thanks Davie
  5. The checkbox<boolean> field in a DBGrid doesn't not work as expected. There are TWO problems. PROBLEM #1: I would expect that when I click right inside the checkbox, that it will change it's status<from checked to unchecked>. But sadly, this is NOT the case. Example: 1. Load up the sample demo app that has the Grids, 2. Then CLICK INSIDE the checkbox of the "Boolean Field", it's like the 4th or 5th column. Keep clicking it until you see the checkmark CHANGE it's status. 3. NOW move the mouse one row down and click INSIDE the checkbox. You will notice that the checkbox does NOT change status. click it again and it WILL change the status 4. NOT, let's do something a little different. Let's move the mouse down one row and click on the word "true" or "false" that is NEXT to the checkbox. In fact you can click on ANY field in that row. 5. NOW, click inside the checkbox AND IT WILL change it's status. So, what does this mean? It means that until the row has been clicked<selected>, you are NOT able to change the status of the checkbox. That is not intuitive. I would think that if I positioned my mouse inside a checkbox and then clicked it, that the checkbox should CHANGE. I don't know if the problem is with extJS or in the uniGUI code, but I think you will agree that this is not the way that a user would expect it to work. PROBLEM #2: I want to calculate the number of checkboxes that the user checked and then display the total in some label. This ALMOST works. I have trapped several events. OnCellClick, OnCellContextClick, OnMouseUp, OnSetCellValue to no avail. It seems that when the checkmark changes<after I click in in>, my totaling logic is NOT called. BUT, the moment I click on some other field that is NOT a checkbox, then POOF, my totaling logic is called and it displays the correct number of checkmarks. It's as though the clicking of the checkbox does NOT trigger any of these events Am I missing a propery or something? Davie
  6. Yes, I converted to use the DBGrid and it works PERFECTLY. EXCEPT for one thing that I noticed. I have a boolean field called "Tag". I use it so that the user can CHECKMARK a record. That "sort-of" works. More on that later. When you click on the checkmark it doesn't always change the checkmark status. I will start a new topic on "DBGrid Checkbox not working" and you will see what I'm talking about. I can demonstrate it with the sample demo app. Davie
  7. Huh, I always used Pervasive SQL or MySQL or MS SQL or DBase. I never used the TClientDataSet I just read about it and it looks freaking EZ to do. I will do that and drop the dumb string grid. Davie
  8. I wonder why there is no "classical" way to show a ListView. Seems like it would be a nice/needed controll. WoW. Is there a way to know which ROW of a stringgrid that I may have dbl-clicked on? So, you are saying to use the DBGrid. Now you say you do it in VIRTUAL mode? That would be acceptable if I could load up the data into the "virtual" area by myself. So "virtual" is the way we can use the DB controls without actually accessing a true database? If that's the case, then I'm all gung-ho. I will take a look at your project to see what I can suck out of it. Thanks Davie
  9. When I use the PageControl with 3 tabsheets, I end up with a problem. I start with all three tabs VISIBLE. And depending on the login credentials from my login screen, I will remove a tab. So, I set tabsheet3.tabvisible to false. Basically my code sets the tabsheet3 to false no matter what, THEN if they appear like a super user, I set the tabvisible to TRUE. The dissappointing thing is that now the CURRENT ACTIVE tab then becomes tabsheet 3. Is the active tab supposed to CHANGE? I had tabsheet 1 set as the active, and then I set the tabvisible on TS3 to false and then set the tabvisible on TS3 to true and then POOF, my actiive TS is now TS3. Huh. Is it supposed to work this way? Is there a way to make these controls behave as close as possible to the way the VCL works? Thanks Davie
  10. I have an issue with the ColCount property of the stringgrid. It appears that I set it to "8" in the object inspector<design time> and then when I run the program, I get an index out of range type of error. When I set it during RUN-TIME, then I have no problem. Is this the way it's supposed to work? Davie
  11. Wow, it "appears" they are interested in our comments. I went ahead and checkmarked "UniGUI" on one form and manually typed it in for another form. Then at the end where they wanted to know the most important thing for the next release, I said ... "STABLE IDE!!!!, Truely EZ work flow for mobile apps. Purchase uniGUI and make it bad ass" So, those were my two cents. Davie
  12. I had a topic on TListView and no replies I am in dire need to have a list shown to the user and to let the user "checkmark" the items they want. THEN I have a button that processes all the items that are checkmarked. How to do this? I know that in the stringgrid, I can click on several items to select "multiple" items, BUT, if the user then accidentally clicks on another item, then it messes up the selections. They are too fragile and the user can mess up the selections without realizing it. So, a checkbox is more intuitive and you can easily see what's checked and what's not checked. I've looked long and hard and I don't see anything for this. Did I miss something cool? Seems to me that a checkbox feature in some sort of list would be a key feature. Since the items are manually generated, I can't use any of the DB controls. Thanks Davie
  13. I had already thought about adding an EnterCriticalSection or some such thing, but you make a good point, under normal circumstances. My circumstance however, is that I have a ton of old code that refers to a global variable named FDataModule, and so that's why I chose the way I did. Many of these modules may or may not be linked into the Web version and may or may not be linked into the desktop version. Thoughts? Davie
  14. DelphiDude; thanks. Look at my first text at the top of the thread. You will see an example of "GetProperAge" function. It's like 30 lines. Then I show about a 5 line example of how I might CALL the GetProperAge function. If you could pretty please with sugar on top please construct the proper equivilent code for UniGUI to make the "GetProperAge" work and to make the "SomeFunction" procedure to work. Many many thanks in advance. Davie
  15. Actually, I was able to get the TDataModule to work properly. The problem was that I had kept the created object in a "GLOBAL" variable... which is BAD of course. BUT I have a ton of old working code that depends on that global object ;( SOOOooo, I decided to create a function that goes by the SAME NAME as the global name: For example: My global variable was... Var FDataModule:TDataModule; I replaced it with this..... Function FDataModule:TDataModule; And this function figures out what the correct pointer is Basically, I have a string list, and for every SESSIONID, I have the object of the stringlist pointing to the newly created TFDataModule object. That meant I had to create a "CreateFDataModule" function and a "FreeFDataModule" procedure that both utilize my SessionList string list of objects. That way depending on which session is trying to do database work, it will of course call my "FDataModule" function<which use to be a pointer> So, now my code utilizes the PROPER object <in respect to the sessionID> and I keep track of as many objects as I have sessions. It was easier to create my 3 little functions (about 60 EZ lines of code) and to modify my creation and freeing code (about 4 references) THAN to change literally hundreds of places where the static object pointer was being referenced So, now it works perfectly Davie P.S. Here's my 3 little functions in case you care. Var P_GetSessionID:TFunctionString; // points to function that gives me string representing the unique SessionID SessionList:TStringList; // needs to be initialized as a SORTED list Function FDataModule:TFDataModule; // Used to be a VARIABLE Var FDataModule_Instance:TFDataModule; //Use this if not in web mode - faster Function CreateFDataModule:TFDataModule; Procedure FreeFDataModule; Implementation Function FDataModule:TFDataModule; Var SessionID:String; Index:Integer; DataIndex:Integer; Begin If G_WebMode Then Begin If Assigned(P_GetSessionID)=False Then Raise Exception.Create('Function FDataModule: P_GetSessionID is NOT initialized.'); SessionID:=P_GetSessionID; If SessionList.Find(SessionID,Index) Then Begin Result:=TFDataModule(SessionList.Objects[index]); End Else Result:=Nil; End Else Result:=FDataModule_Instance; End; Function CreateFDataModule:TFDataModule; Begin If G_WebMode Then Begin If Assigned(P_GetSessionID)=False Then Raise Exception.Create('Function FDataModule: P_GetSessionID is NOT initialized.'); Result:=TFDataModule.Create(Nil); SessionList.AddObject(P_GetSessionID,Result); End Else Begin Application.CreateForm(TFDataModule,Result); FDataModule_Instance:=Result; End; End; Procedure FreeFDataModule; Var vObject:TFDataModule; SessionID:String; Index,DataIndex:Integer; Begin If G_WebMode Then Begin If Assigned(P_GetSessionID)=False Then Raise Exception.Create('Function FDataModule: P_GetSessionID is NOT initialized.'); SessionID:=P_GetSessionID; If SessionList.Find(SessionID,Index) Then Begin vObject:=TFDataModule(SessionList.Objects[index]); vObject.Free; SessionList.Delete(Index); End; End Else Begin FDataModule_Instance.Free; FDataModule_Instance:=Nil; End; End;
  16. I suppose that makes sense. Is it because the browser won't send it as a normal key press? Just like it doesn't send the CR as a normal keypress? Davie
  17. I will presume that uniGUI utilizes AJAX to do it's communication to the server. I have a concern about vulnerabilities with the framework. There are many types of vulnerabilities. Can anyone please comment on whether or not uniGUI is vulnerable to the CSRF or XSS attacks? And if so, how to mitigate them? As far as sql injection is concerned, that is more of a programmer carefully crafting their sql statements, so no worries there. IE: Check for ' and replace with '' .... replace apostrophe with two apostrophes. Thanks Davie
  18. I have a TuniEdit with an OnKeyPress event. It seems to work fine and get all the chars I'm interested in including the CR<#13>. HOWEVER, it appears that the BACKSPACE<#08> character is totally ignored. So, basically, my event never gets called when the user is using the backspace to ALTER the contents of the field. Luckily, the onChange event DOES happen as I change the edit field with the backspace key. Very wierd the that OnChange recognizes the keypress, but the OnKeyPress does NOT. Am I missing something? Davie
  19. I have been trying to see if I can make use of this system for the past week. The trial version has a timeout that is way too short. It makes it almost impossible to test what I am doing. I have a login screen and then I have to click on several things to get to some tabs and by the time I am at the screen that I need to test, the system just times out Considering you have a message that pops up indicating it's a trial version and considering you do NOT honor the form's Caption, I don't see a logical reason to not extend the time period. OR, why not make it display the "thanks for using uniGUI" message and then just continue on. That way, you are STILL naging, BUT,I can continue to test without wasting a bunch of time reloading the page and clicking away and logging in etc.... Do you understand? Thanks Davie
  20. At first, I wanted a listview to show a bunch of rows from my array of info. It appeared there is NO listview equivalent. So, I tried StringGrid. The top row and left row (fixed rows) do not stay on the screen when I scroll around. I saw where this was normal behaviour. Is there a chance of fixing this? Also, in the design mode, I could change the column widths, but when I run it in web mode, the columns are all the same width and CAN NOT be resized. Very wierd. Is this also normal behaviour? NOTE: If in design mode, if I go to "view form as text" and then switch back to "view as form", ALL the column width adjustments are lost. This is not intuitive... am I missing something? The listview is the real solution for me so that I can RIGHT JUSTIFY certain columns that contain money values. Any thoughts? Davie
  21. #2: Huh, so if I create a form<using the function> and store it in the pubilc area of my main form, and then I do nothing with the object/form until the user clicks the "Display" button... are you saying that if I put the dynform.showmodal statement in the buttonclick event, that it would not show the form correctly? It seems to me that once an form object is created, that it should be able to be accessed at a much later point in time, provided I don't "free" it. Am I missing something? #4: So, if I have a TTimer and every second I change the caption of a label, you are saying that changing the caption property will NOT SEND then brower the appropriate commands to change the caption? #5: SO, if I do NOT have a OnKey event, then there is LESS traffic? IE: The browser will not send every keystroke? Is there a TuniForm class that has the js/aj commands built into it so that the ESC key will close the form? It would seem a populare thing to want to do. BTW: Thanks for all your answers Davie
  22. So basically, you are saying that you can NOT keep a nice concise logic flow. It's going to be spread out all over the place and in order to get an overview of what's happening you have to do mental girations to get the full picture.... as opposed to the full picture being right in front of you in the desktop version? Davie
  23. Because I am NOT converting and getting RID of old app. I am creating a web "companion" that will utilize MANY of the functions that I have already created. The forms of course will all have to be re-created, but I wanted to keep as much core code as possible. Davie
  24. I've looked thru the demos.The problem is that the fields are NOT documented anywhere. Sure, I could look at a demo and see that a particular property "appears" to do a particular thing. But I will NOT know the full story, like other things the property does that is not obvious. Documentation as to what the property does and what the requirements are to even use the property and what the side effects of using such property would be helpful. If I was a scientist and saw that Gene-II12 seemed to allow fast healing, I might be tempted to use it. But without know that this gene allows fast cell re-generation, I might not realize that I would be speeding up cancer growth as well. I hope you see my point. Davie
×
×
  • Create New...