Jump to content

Tim Koscielski

  • Content Count

  • Joined

  • Last visited

  • Days Won


Everything posted by Tim Koscielski

  1. Yes, if I make the change and comment out that line, the items do align correctly on the initial form create. And if I leave that line enabled, you are correct that when I resize the window, they do draw correctly. Now that you know where the issue is, I feel great that you'll come up with a solution to accommodate. The progress you have made recently with this stuff is great and I have been enjoying working with this . And to be honest, I am using the Alpha track for production development and I had just gotten used to not leaving a way to revert back to the prior version. This time it got me. <grin> Thanks for all you do.
  2. I just downloaded this version and opened a project that was using various Align features. The project when run was not displaying items as I expected. So I tried something simple. 1) Created a new project 2) On the form placed a TW3Panel and aligned it with the Top (alTop) Changed the color to red just to visual see this panel at runtime ---- This works.... 3) Placed a TW3Label inside the TW3Panel and selected align left (alLeft). When I run the project, the label is not visible. 4) If the change the label to align none (alNone), it displays in the panel just fine as expected. 5) If I place more controls in the panel like a button and set aligns to alLeft or alRight, strange things are happening. If you need the project let me know, but I hope it is easy enough for you to create a project from scratch. When I updated the Alpha version, it looked like the updater ran OK, but I can try other things if you think it is something with my update vs. the framework.
  3. This worked like a champ. Thanks for helping to figure this out. I just couldn't find the easy route to get this work and the ForEach example was perfect.
  4. Jarto, I did check this out. However, it is not generic for parsing JSON data. In that example the JSON file is defined in the code. In the DataReceive function, it has the items like 'name', 'alpha3Code', etc. already defined here. It is not generic and does show how one would go about determining if there are additional fields in the JSON dataset. Below is the code directly from that example. Ideally I'd liked to access those fields in a more generic fashion. try JsonData:=TJson.Parse(Sender.ResponseText); W3StringGrid1.RowCount:=Length(JSonData); for i:=0 to W3StringGrid1.RowCount-1 do begin W3StringGrid1.Cells[i,0]:=JsonData[i].name; W3StringGrid1.Cells[i,1]:=JsonData[i].alpha3Code; W3StringGrid1.Cells[i,2]:=JsonData[i].capital; W3StringGrid1.Cells[i,3]:=JsonData[i].population; end; finally Sender.Free; end;
  5. OK, I have looked at examples and I am sure I am just overlooking something simple. I have a REST service returning simple results for various tables in a database. The results can vary in the number of fields returned and the field names can be different. I know that I should be able to write a generic function to parse this JSON pattern, but I just can't seem to figure it out in SMS. I know I can do it with Javascript, but I am hoping someone can help fill in a blank I am missing in processing JSON with SMS. Below are two sample JSON text strings that I'd like to parse and add to a grid dynamically. SAMPLE JSON ONE: [{"id":"1","name":"Joe"},{"id":"2","name":"Jill"},{"id":"3","name":"Sam"}] SAMPLE JSON TWO: [{"id_person":"1","first":"Joe","last":"Smith"},{"id_person":"2","first":"Jill","last":"Jones"},{"id":"3","first":"Sam","last":"Butler"}] I am solid on creating columns as needed, adding data to cells, etc. What I can't figure out is how to generically read each JSON string and determine what the fields are for each and then extracting the data for each item. Can anyone provide some help. Sometimes it is the easy things that get me. I have done this in Delphi without any issues in the past, but I need a little direction for SMS to shorten the learning curve. Thanks.
  6. Hey, you could tell from my short post that I was dealing with trying to make a login form more friendly. Also, 4 STARS to SMS for allowing us to mix and match Javascript into the code so that we can always find an answer. One question. I see you have an event handler OnGotFocus. Are you doing anything special here to support the proper TabIndex process or are you just doing something else like reading the field and doing a SelectAll on the text in the field itself? Just curious. Thank you David for the guidance. I'll give this a try and I'm sure it is what I am looking for.
  7. With SMS, what is the best way to manage tab order? I have tried capturing the TAB key in the KeyDown event which does work, but when I try to use object.SetFocus, the focus will not move based on the code and still ends up in a funky spot. Lastly, if I want a button to be use as default when a user presses enter on a TW3EditBox field, I assume I can use the KeyDown event to capture an enter and call the correct function. Thanks for the help.
  8. Tim Koscielski

    css styling

    Just a quick thumbs up in support of Tailwind.css and integrating it into a SMS app. I have used it for a project and it is really easy to adjust once you include it in your project. The best option for me to easily adjust the look and feel of things without needing to reinvent the wheel here.
  9. I use TW3StringGrid in a project and I just noticed that when the grid has more rows than space to display them, the scrollbar shows, but the grid won't show the scrolled data in Firefox. This works fine in Chrome and Edge. I tested this in the DEV channel and I am using version I also tried the two sample apps, "StringGrid Demo" and "GridProject" and they both have the same issue only in Firefox. Any ideas on what I am missing? Firefox was version 70.0 64 bit. tim
  10. Jarto, Does this mean I can pull the dev update down for refresh with your changes? Thank you for the quick response. tim UPDATE1: I did see the new update out there. I have pulled it down and will test a little later. Thank you. UPDATE2: All worked as expected. Thanks.
  11. I have upgraded to the latest DEVELOPMENT channel version After I upgraded SMS, the form transitions stopped working and I could not get the app to move smoothly to another form. For fun, I tested the MultipleForms demo and got almost the same results. When clicking Button2 to transition to a form created by the application, nothing happens. When you click on the second button that creates a form on the fly and then transitions to it does work, but then you can't transition back to the first form. In the demo app, this is the line of code that is not working for the auto created secondary form. Application.GotoForm('Form2', feFromRight); In the Firefox console, the following message is displayed for the MultipleForms demo. Will-change memory consumption is too high. Budget limit is the document surface area multiplied by 3 (535500 px). Occurrences of will-change over the budget will be ignored. Can anyone shed any light and what can be done to fix this? I have some changes I need to make to the project, but this is the only item that is holding that up. Are there any other options to transition to a different form that works in Firefox. Of course all of this works in Chrome and Explorer without any issues. Thanks for the help. tim
  12. Ok, I think I need to go back on all of that above, it was NOT A PROBLEM with the Grid. I think it was a problem with object initialization. In this project, I was using FontAwesome and I had the following for a form in the InitializeObject procedure. I initialized the Grid and added the InnerHTML to a button. procedure TForm_ProjectMasterListN.InitializeObject; begin inherited; {$I 'Form_ProjectMasterListN:impl'} writeln('InitializeObject'); InitGrid; W3Button1.InnerHTML:=#'<i class="fa fa-refresh fa-2x"></i>'; end; As I worked through this I discovered the when I removed InitGrid and the InnerHTML items from InitializeObject, the error went away. I then added these to InitializeForm and it then worked correctly. I am assuming that with some of the new features in this BETA, this is something changed, but also I assume that I had been doing this the wrong way anyway. Now when I run my code in InitializeForm, it all works. If anyone has any additional insight, please let me know. Thank you for the help.
  13. Thanks. I appreciate you trying it out. Still trying to track down exactly what is the issue with my project.
  14. OK, now I have some more info. The issue I'm having is specifically with TW3Grid. My code was initially based on the demo provided and does approximately the exact same process. The demo grid project still works exactly as it is, but now I am comparing the two and at the moment everything seems to be reasonably the same In ObjectInitialize in my project, I am creating the columns in the grid with the following code. The very first TW3TextColumn.Create I call is generating the error. I am digging into this later today and I'll continue to update what I find. If anyone has any ideas, please let me know. procedure TForm.InitGrid; var Col_ProjectId: TW3TextColumn; begin Col_ProjectId := nil; Col_ProjectId := TW3TextColumn.Create(W3Grid1 as IW3ColumnsControl); Col_ProjectId.Header.Caption := '#'; Col_ProjectId.Header.Alignment := taCenter; Col_ProjectId.Alignment := taCenter; Col_ProjectId.Width := 100; W3Grid1.Columns.Add(Col_ProjectId); end;
  15. In the previous BETA channel, I had an app that was working just fine. Now in version, the app build creates an error when run. "TypeError, Cannot read property 'FHandle$4' of null" I know this is a BETA, but since it was working in the previous versions and then broke it this one, I'm wondering how I can go about figuring out what might have happened. Just looking for any suggestions to investigate further. Thanks.
  16. Jarto, I think in the Update list, the date for this update readme lists 2018 and not 2019. You just might want to check. tim
  17. I have just done a light review of this StringGrid demo and was wondering if TW3Button is an option. What the real question is how to get the unique ID of selected row and then take the user to either a new form or view based on the selected item. At this time, I have used the TW3Grid, but was interested in perhaps switching over to this one.
  18. Thank you for the quick overview. I had seen notes about the handle, but was hoping someone could summarize it here for me. This helps to clarify and gives me a start. I will always try to figure out how to keep things organized in SMS, but for the short term, ASM may be the crutch I need to get things going.
  19. I have been using ASM blocks in my project and find that I want to mix javascript and SMS. Below are two use cases. In an ASM block I would like to set a SMS attribute on a SMS object like a button doing something like TW3Button.Visible := True In an ASM blick I would like to call a SMS procedure or function to complete some common actions Below is my psuedo code which I am hoping someone can correct and give some guidance on. I'm just looking for enough to be dangerous..... EXAMPLE 1: Set attribute on button. asm // Unsure how to do this here to call back to a button in SMS @W3Button1.Visible = True end; Example 2: Call SMS function from a javascript block procedure TForm.DoSomething; begin ShowMessage('Doing something'); end; procedure TForm.OnButtonClick(Sender: TObject); begin asm @DoSomething; end; end; For me this is the simplest I can make it which will help better understand the javascript-SMS links. I am hopeful that you understand, for these examples, it is not exactly how I'm using them, but for understanding I thouhgt this was the easiest examples I could do. Thanks. tim
  20. Ok, this first follow up is what I did to get it working based on some of the links for handling forms in javascript. Fortunately because I could mix and match SMS Pascal and Javascript, I get the best of both worlds. On my Smart Form, I have a TW3Button and a TW3EditBox with a type of ltFile. Then with the following javascript, I can get the form posted correctly to a backend which is able to capture the file and other variables of the form. Note that the other elements are created dynamically based on an example I was using. The ShowMessage and Alert items were just feedback mechanisms for me to see this part working. Both my DMVC server and a PHP script were able to process this. I am sure that there is a more friendly SMS way of writing this, but for now it got my form working and I was able to continue to plow forward with this upload piece being reasonably well contained. My key take way was getting the file upload field and the code below did the trick. This may not be the best way, but at least it was a starting point. myFile = document.getElementById('id', 'fupload1'); The InitializeObject was important to label the TW3EditBox element correctly. Below that is the code that I stuck in the OnClick event for the button. I saw many other ways to deal with this, but I just wanted to keep it straight forward for the UI. procedure TForm_ImportFile.InitializeObject; begin inherited; {$I 'Form_ImportFile:impl'} W3ButtonBack.InnerHTML := '<i class="fa fa-arrow-left fa-2x"></i>'; // this is a good place to initialize components W3EditBox1.handle.setAttribute('name','fupload'); W3EditBox1.handle.setAttribute('id', 'fupload1'); // Initialize EditBox id to find it with getElementById below W3EditBox1.InputType := itFile; end; // BUTTON CLICK EVENT CODE ShowMessage('Starting'); asm var formData = new FormData(); alert('Trying to get file box'); myFile = document.getElementById("fupload1").files[0]; alert('Got file: ' + myFile.name); formData.append("username", "Groucho"); formData.append("accountnum", 123456); // number 123456 is immediately converted to a string "123456" // HTML file input, chosen by user //formData.append("fupload", fileInputElement.files[0]); //var myFile = new Blob([content], {type: "text/plain"}); formData.append("userfile", myFile, myFile.name); // JavaScript file-like object var content = '<a id="a"><b id="b">hey!</b></a>'; // the body of the new file... var blob = new Blob([content], { type: "text/xml"}); formData.append("webmasterfile", blob); var request = new XMLHttpRequest(); request.open("POST", ""); request.send(formData); end; ShowMessage('Done');
  21. Thank you for the help. It has gotten me closer, but the SMS approach does not seem to be capturing the data. Also, remember, I am using DMVC to receive the POST, but for the SMS side, I could just as easily be using a server running PHP, NODE.JS or some other mechanism to receive and process the file. My question is more general about how SMS can emulate a form POST to upload the file. Now to the example. I can see the SMS example posting to the correct page, but not the actual data of the file upload component. Using the inspector in Chrome or FireFox and watching the Network activity, for the SMS example in the data section I only see the following which seems to just the the object name and not the data. [object FormData] Now when I compare and use a standard HTML5 form almost exactly like the sample you posted above, the network watcher in the Inspector of the browser shows the following in the Params section for the post which is a sample text file I am posting. It is the same file used via the SMS form and the HTML form. -----------------------------244962545219104 Content-Disposition: form-data; name="fupload"; filename="Hello.txt" Content-Type: text/plain I am a plain text document. -----------------------------244962545219104-- Any thoughts on what might be happening here. I will dig a little deeper into the Javascript processing of FormData, but I'm hoping this feed back can help. I find SMS to be a great tool, but I feel like a beginner still learning this tool. Thanks. Tim
  22. That was it.... Thank you... I am not less confused... <grin>
  23. I am using DMVC and SMS and the user is going to be uploading a file to the server. I can create a simple HTML form which will complete the upload to the DMVC server, but I can't quite figure out how to approach it using SMS. I am hoping to get pointed in the right direction or have some suggested options for uploading the file. This is just something that is going to be simple and I'll save the cool features for later. Ideally I was hoping to upload the file in the background and then provide the user feedback once it was done. Nothing fancy like a progress indicator is needed as these files are small, Are there any samples or places I can look. I am using version Thanks. tim
  24. For some reason, I can't reset my forum password or figure out the login. I have done this routine about 5 times with no luck. The only way I can get logged into the forum is to follow the "I forgot my password" link. The email gives me a link to set a new password which also logs me in, but if I go to a second browser or if I log off, I can't log back into the forum. Any ideas here to fix this. I have tried everything I could and just can't figure it out.
  • Create New...