<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>DesktopTable &#8211; Xojo Programming Blog</title>
	<atom:link href="https://blog.xojo.com/tag/desktoptable/feed/" rel="self" type="application/rss+xml" />
	<link>https://blog.xojo.com</link>
	<description>Blog about the Xojo programming language and IDE</description>
	<lastBuildDate>Thu, 29 Oct 2026 17:03:14 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.9.11</generator>
	<item>
		<title>DesktopTable Cell Popover</title>
		<link>https://blog.xojo.com/2026/10/29/desktop-table-cell-popover/</link>
		
		<dc:creator><![CDATA[Wayne Golding]]></dc:creator>
		<pubDate>Thu, 29 Oct 2026 16:37:33 +0000</pubDate>
				<category><![CDATA[Desktop]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[DesktopTable]]></category>
		<category><![CDATA[Xojo Programming Language]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=16743</guid>

					<description><![CDATA[In this post, I&#8217;ll show you how to anchor a popover to a specific DesktopTable cell using CellBoundsAt so you can display full cell text&#8230;]]></description>
										<content:encoded><![CDATA[
<p>In this post, I&#8217;ll show you how to anchor a popover to a specific DesktopTable cell using CellBoundsAt so you can display full cell text (even when the cell can&#8217;t fit it) with correct positioning across macOS and Windows.</p>



<p>Popovers anchor to a control, not a location, which has been somewhat tricky to do in the past. DesktopTable has a CellBoundsAt method which returns a Rect containing the selected cell&#8217;s geometry and position relative to the table control’s location on its parent. This allows us to anchor the popover container to an individual cell.</p>



<figure class="wp-block-image size-full"><img fetchpriority="high" decoding="async" width="890" height="626" src="https://blog.xojo.com/wp-content/uploads/2026/10/image.png" alt="" class="wp-image-16744" srcset="https://blog.xojo.com/wp-content/uploads/2026/10/image.png 890w, https://blog.xojo.com/wp-content/uploads/2026/10/image-300x211.png 300w, https://blog.xojo.com/wp-content/uploads/2026/10/image-768x540.png 768w" sizes="(max-width: 890px) 100vw, 890px" /></figure>



<p>This is useful when you need to show the full contents of a cell whose displayed area can’t fit the underlying data.</p>



<p>In this example, the popover container is intentionally simple &#8211; it is a TextArea sized to fill the container.&nbsp; The container is named PopOverContainer. The Window includes a property named AnchorControl As DesktopRectangle that we&#8217;ll use as the popover&#8217;s anchor.</p>



<p>In the Window Opening event, we initialize the anchor rectangle:</p>



<pre class="wp-block-code"><code>Sub Opening() Handles Opening
&nbsp; AnchorControl = New DesktopRectangle
&nbsp; Window1.AddControl(AnchorControl)
&nbsp; AnchorControl.BorderThickness = 0.0
&nbsp; AnchorControl.FillColor = &amp;c000000FF ' Transparent on MacOS, Window background color on Windows

End Sub</code></pre>



<p>This initializes the rectangle that we will anchor the popover to.</p>



<p>Lastly the CellPressed Event Hanlder:</p>



<pre class="wp-block-code"><code>Function CellPressed(row As Integer, column As Integer, x As Integer, y As Integer) Handles CellPressed as Boolean
&nbsp; #Pragma Unused x
&nbsp; #Pragma Unused y
&nbsp; If column &lt;&gt; 1 Then ' We only want the popover to show on Column 1
&nbsp; &nbsp; Return False
&nbsp; End If
&nbsp;&nbsp;
  // Move the Anchor control to the selected cell position.
&nbsp; AnchorControl.Left = me.CellBoundsAt(row, column).Left + me.Left
&nbsp; AnchorControl.Top = me.CellBoundsAt(row, column).Top + me.Top + me.CellBoundsAt(row, column).Height ' I want the popover to anchor to the bottom of the control
&nbsp; AnchorControl.Width = me.CellBoundsAt(row, column).Width
&nbsp; AnchorControl.Height = If(TargetWindows, 0, 1) ' Windows can handle 0 height, MacOS doesn't &nbsp;

  // Now that we have an anchor point at the correct location we can popover

&nbsp; Var poc As New PopOverContainer

&nbsp; poc.TextArea1.Text = me.CellTextAt(row, column)

&nbsp; poc.ShowPopover(AnchorControl, DesktopContainer.DisplaySides.Bottom)
  Return True
End Function</code></pre>



<h3 class="wp-block-heading">Cross-platform Adjustments </h3>



<p>Some adjustments will need to be made for the different ways targets handle transparency.&nbsp; Windows doesn’t visually render transparent controls in the same way macOS does, and macOS may require the anchor control to occupy a space.&nbsp; By setting the anchor height appropriately, we can ensure the popover is positioned correctly on both platforms. </p>



<p><a href="https://blog.xojo.com/wp-content/uploads/2026/10/Table-Cell-Pop-over.xojo_binary_project.zip">Download the project</a>.</p>



<p><em>Wayne Golding has been a Xojo developer since 2005 and is a Xojo MVP. He operates the IT Company <a href="http://www.axisdirect.nz">Axis Direct Ltd </a>which primarily develops applications using Xojo that integrate with Xero www.xero.com. Wayne’s hobby is robotics where he uses Xojo to build applications for his Raspberry Pi, often implementing IoT for remote control.</em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p class="has-text-align-center has-text-color has-link-color wp-elements-a0a2ac26ad214a49dac577734d259176" style="color:#84bd00"><a href="https://xojo.com/download/" target="_blank" rel="noreferrer noopener">Download Xojo</a></p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Introducing DesktopTable: A More Capable DesktopListBox</title>
		<link>https://blog.xojo.com/2026/10/20/introducing-desktoptable-a-more-capable-desktoplistbox/</link>
		
		<dc:creator><![CDATA[William Yu]]></dc:creator>
		<pubDate>Tue, 20 Oct 2026 16:52:10 +0000</pubDate>
				<category><![CDATA[Desktop]]></category>
		<category><![CDATA[General]]></category>
		<category><![CDATA[Learning]]></category>
		<category><![CDATA[2026r3]]></category>
		<category><![CDATA[DesktopTable]]></category>
		<category><![CDATA[Listbox]]></category>
		<guid isPermaLink="false">https://blog.xojo.com/?p=16615</guid>

					<description><![CDATA[DesktopTable is a new control introduced in Xojo 2026r3, it is designed as a drop-in replacement for DesktopListBox, while adding a range of features for&#8230;]]></description>
										<content:encoded><![CDATA[
<p>DesktopTable is a new control introduced in Xojo 2026r3, it is designed as a drop-in replacement for DesktopListBox, while adding a range of features for building richer, more capable tables.</p>



<p>Most existing DesktopListBox code will compile with little or no change when transitioning to DesktopTable. At the same time, DesktopTable adds features that previously required custom controls or additional code.</p>



<h2 class="wp-block-heading">What’s New?</h2>



<p>DesktopTable adds support for:</p>



<ul class="wp-block-list">
<li><strong>Frozen columns and rows</strong> — Keep important columns, headers, or totals visible while scrolling</li>
</ul>



<figure class="wp-block-video"><video height="1130" style="aspect-ratio: 1664 / 1130;" width="1664" controls src="https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_FrozenColumns.mov"></video></figure>



<ul class="wp-block-list">
<li><strong>Merged cells</strong>&nbsp;— Span cells across rows and columns for titles, groupings, and custom layouts</li>



<li><strong>Sticky section headers</strong>&nbsp;— Keep section headers pinned as their section scrolls</li>



<li><strong>Hidden and reorderable columns</strong>&nbsp;— Hide columns without removing their data, or let users rearrange them</li>



<li><strong>Per-row heights</strong>&nbsp;— Set individual row heights and optionally allow users to resize rows</li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="992" src="https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_VariableRowHeights-1024x992.png" alt="" class="wp-image-16627" srcset="https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_VariableRowHeights-1024x992.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_VariableRowHeights-300x291.png 300w, https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_VariableRowHeights-768x744.png 768w, https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_VariableRowHeights.png 1170w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<ul class="wp-block-list">
<li><strong>Insets</strong>&nbsp;— Add space before the first or after the last row</li>



<li><strong>Progress bars, checkboxes, and containers</strong>&nbsp;— Built-in cell types for richer data presentation</li>
</ul>



<figure class="wp-block-image size-large"><img decoding="async" width="1024" height="714" src="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.16.33-PM-1024x714.png" alt="" class="wp-image-16636" srcset="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.16.33-PM-1024x714.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.16.33-PM-300x209.png 300w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.16.33-PM-768x535.png 768w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.16.33-PM-1536x1071.png 1536w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.16.33-PM.png 1664w" sizes="(max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="387" height="755" data-id="16646" src="https://blog.xojo.com/wp-content/uploads/2026/10/Win32ProgressBarCellType-2.png" alt="" class="wp-image-16646" srcset="https://blog.xojo.com/wp-content/uploads/2026/10/Win32ProgressBarCellType-2.png 387w, https://blog.xojo.com/wp-content/uploads/2026/10/Win32ProgressBarCellType-2-154x300.png 154w" sizes="auto, (max-width: 387px) 100vw, 387px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="387" height="785" data-id="16645" src="https://blog.xojo.com/wp-content/uploads/2026/10/WinUIProgressBarCellType-1.png" alt="" class="wp-image-16645" srcset="https://blog.xojo.com/wp-content/uploads/2026/10/WinUIProgressBarCellType-1.png 387w, https://blog.xojo.com/wp-content/uploads/2026/10/WinUIProgressBarCellType-1-148x300.png 148w" sizes="auto, (max-width: 387px) 100vw, 387px" /></figure>
</figure>



<ul class="wp-block-list">
<li><strong>Custom cell controls</strong>&nbsp;— Use&nbsp;<code>CellBoundsAt</code>&nbsp;to position your own controls over cells</li>



<li><strong>Automatic Right-to-Left support</strong>&nbsp;— The table automatically adapts and aligns columns and text for right-to-left languages</li>
</ul>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-2 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="777" data-id="16640" src="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.45.09-PM-1024x777.png" alt="" class="wp-image-16640" srcset="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.45.09-PM-1024x777.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.45.09-PM-300x228.png 300w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.45.09-PM-768x582.png 768w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.45.09-PM.png 1424w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="777" data-id="16639" src="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.44.23-PM-1024x777.png" alt="" class="wp-image-16639" srcset="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.44.23-PM-1024x777.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.44.23-PM-300x228.png 300w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.44.23-PM-768x582.png 768w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-1.44.23-PM.png 1424w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>
</figure>



<ul class="wp-block-list">
<li><strong>Virtual data sources</strong>&nbsp;— Work with large datasets without storing every row in the control</li>



<li><strong>CSV and TSV support</strong>&nbsp;— Save and load table data directly</li>



<li><strong>Row swipe actions</strong>&nbsp;— Provide familiar leading and trailing actions on macOS, Windows, and Linux touchpads</li>
</ul>



<figure class="wp-block-video"><video height="1090" style="aspect-ratio: 1424 / 1090;" width="1424" controls src="https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_MouseGesture.mov"></video></figure>



<ul class="wp-block-list">
<li><strong>Live column resizing</strong>&nbsp;— Respond while a column is being resized, as well as when resizing finishes</li>



<li><strong>Custom drawing and macOS vibrancy</strong>&nbsp;— More control over the table&#8217;s appearance and behavior</li>
</ul>



<figure class="wp-block-image size-full"><img loading="lazy" decoding="async" width="1000" height="878" src="https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_Translucent.png" alt="" class="wp-image-16623" srcset="https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_Translucent.png 1000w, https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_Translucent-300x263.png 300w, https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_Translucent-768x674.png 768w" sizes="auto, (max-width: 1000px) 100vw, 1000px" /></figure>



<h2 class="wp-block-heading">Moving from DesktopListBox</h2>



<p>The transition is intentionally straightforward. Change the super of your <code>DesktopListBox</code> control to&nbsp;<code>DesktopTable</code>, build your project, and address the few members that have been renamed.</p>



<figure class="wp-block-table"><table class="has-fixed-layout"><thead><tr><th>DesktopListBox</th><th>DesktopTable</th></tr></thead><tbody><tr><td>HeaderAt</td><td>ColumnHeaderAt</td></tr><tr><td>HasHeader</td><td>HasColumnHeader</td></tr><tr><td>RefreshCell</td><td>RefreshCellAt</td></tr><tr><td>PressHeader</td><td>PressColumnHeaderAt</td></tr></tbody></table></figure>



<p>Most familiar APIs—including&nbsp;<code>AddRow</code>,&nbsp;<code>CellTextAt</code>,&nbsp;<code>ColumnCount</code>,&nbsp;<code>ColumnWidths</code>,&nbsp;<code>RemoveRowAt</code>, and&nbsp;<code>SelectedRowIndex</code>—retain their existing names.</p>



<h2 class="wp-block-heading">A Few Things to Check</h2>



<p>Some behavior is intentionally different. In particular, row reordering with a&nbsp;<code>DataSource</code>&nbsp;or expandable rows requires you to handle&nbsp;<code>DragReorderRows</code>, and row dragging requires&nbsp;<code>DragRow</code>&nbsp;to populate the&nbsp;<code>DragItem</code>&nbsp;and return&nbsp;<code>True</code>.</p>



<p>Sorting also removes merged cells, so applications using merged cells should re-apply their merges after sorting. Frozen rows retain their position and cannot be reordered.</p>



<p><img src="https://s.w.org/images/core/emoji/17.0.2/72x72/1f4a1.png" alt="💡" class="wp-smiley" style="height: 1em; max-height: 1em;" />If you want to improve performance when adding and removing rows, you can set <code>AllowRowAnimation</code> to False.</p>



<h2 class="wp-block-heading">An Enhanced IDE Experience</h2>



<p>We couldn&#8217;t introduce DesktopTable without enhancing the IDE experience as well. Table editing in the IDE is now more intuitive, compared against DesktopListBox, making it easier to edit and work with your tables.</p>



<figure class="wp-block-gallery has-nested-images columns-default is-cropped wp-block-gallery-3 is-layout-flex wp-block-gallery-is-layout-flex">
<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="750" data-id="16631" src="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.02.18-AM-1024x750.png" alt="" class="wp-image-16631" srcset="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.02.18-AM-1024x750.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.02.18-AM-300x220.png 300w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.02.18-AM-768x563.png 768w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.02.18-AM.png 1228w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">DesktopTable editor</figcaption></figure>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="752" data-id="16632" src="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.03.53-AM-1024x752.png" alt="" class="wp-image-16632" srcset="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.03.53-AM-1024x752.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.03.53-AM-300x220.png 300w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.03.53-AM-768x564.png 768w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.03.53-AM.png 1220w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /><figcaption class="wp-element-caption">DesktopListBox editor</figcaption></figure>
</figure>



<p>We&#8217;ve also updated the debugger to better handle DesktopTable contents, efficiently loading rows dynamically and allowing you to jump directly to and inspect specific rows without loading the entire table.</p>



<figure class="wp-block-image size-large"><img loading="lazy" decoding="async" width="1024" height="500" src="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.14.48-AM-1024x500.png" alt="" class="wp-image-16633" srcset="https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.14.48-AM-1024x500.png 1024w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.14.48-AM-300x147.png 300w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.14.48-AM-768x375.png 768w, https://blog.xojo.com/wp-content/uploads/2026/10/Screenshot-2026-10-06-at-11.14.48-AM.png 1134w" sizes="auto, (max-width: 1024px) 100vw, 1024px" /></figure>



<h2 class="wp-block-heading">Final Thoughts</h2>



<p>DesktopTable gives existing DesktopListBox applications a familiar starting point while opening the door to considerably richer table interfaces. Stay tuned for more blog posts exploring many of its exciting new features!</p>



<p><em><em><em>William Yu grew up in Canada learning to program BASIC on a Vic-20. He is Xojo’s resident Windows and Linux engineer, among his many other skills. Some may say he has joined the dark side here in the USA, but he will always be a Canadian at heart.</em></em></em></p>



<ul class="wp-block-social-links has-normal-icon-size is-content-justification-center is-layout-flex wp-container-core-social-links-is-layout-16018d1d wp-block-social-links-is-layout-flex"><li class="wp-social-link wp-social-link-facebook  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.facebook.com/goxojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12 2C6.5 2 2 6.5 2 12c0 5 3.7 9.1 8.4 9.9v-7H7.9V12h2.5V9.8c0-2.5 1.5-3.9 3.8-3.9 1.1 0 2.2.2 2.2.2v2.5h-1.3c-1.2 0-1.6.8-1.6 1.6V12h2.8l-.4 2.9h-2.3v7C18.3 21.1 22 17 22 12c0-5.5-4.5-10-10-10z"></path></svg><span class="wp-block-social-link-label screen-reader-text">Facebook</span></a></li>

<li class="wp-social-link wp-social-link-x  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://x.com/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M13.982 10.622 20.54 3h-1.554l-5.693 6.618L8.745 3H3.5l6.876 10.007L3.5 21h1.554l6.012-6.989L15.868 21h5.245l-7.131-10.378Zm-2.128 2.474-.697-.997-5.543-7.93H8l4.474 6.4.697.996 5.815 8.318h-2.387l-4.745-6.787Z" /></svg><span class="wp-block-social-link-label screen-reader-text">X</span></a></li>

<li class="wp-social-link wp-social-link-linkedin  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.linkedin.com/company/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M19.7,3H4.3C3.582,3,3,3.582,3,4.3v15.4C3,20.418,3.582,21,4.3,21h15.4c0.718,0,1.3-0.582,1.3-1.3V4.3 C21,3.582,20.418,3,19.7,3z M8.339,18.338H5.667v-8.59h2.672V18.338z M7.004,8.574c-0.857,0-1.549-0.694-1.549-1.548 c0-0.855,0.691-1.548,1.549-1.548c0.854,0,1.547,0.694,1.547,1.548C8.551,7.881,7.858,8.574,7.004,8.574z M18.339,18.338h-2.669 v-4.177c0-0.996-0.017-2.278-1.387-2.278c-1.389,0-1.601,1.086-1.601,2.206v4.249h-2.667v-8.59h2.559v1.174h0.037 c0.356-0.675,1.227-1.387,2.526-1.387c2.703,0,3.203,1.779,3.203,4.092V18.338z"></path></svg><span class="wp-block-social-link-label screen-reader-text">LinkedIn</span></a></li>

<li class="wp-social-link wp-social-link-github  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://github.com/topics/xojo" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M12,2C6.477,2,2,6.477,2,12c0,4.419,2.865,8.166,6.839,9.489c0.5,0.09,0.682-0.218,0.682-0.484 c0-0.236-0.009-0.866-0.014-1.699c-2.782,0.602-3.369-1.34-3.369-1.34c-0.455-1.157-1.11-1.465-1.11-1.465 c-0.909-0.62,0.069-0.608,0.069-0.608c1.004,0.071,1.532,1.03,1.532,1.03c0.891,1.529,2.341,1.089,2.91,0.833 c0.091-0.647,0.349-1.086,0.635-1.337c-2.22-0.251-4.555-1.111-4.555-4.943c0-1.091,0.39-1.984,1.03-2.682 C6.546,8.54,6.202,7.524,6.746,6.148c0,0,0.84-0.269,2.75,1.025C10.295,6.95,11.15,6.84,12,6.836 c0.85,0.004,1.705,0.114,2.504,0.336c1.909-1.294,2.748-1.025,2.748-1.025c0.546,1.376,0.202,2.394,0.1,2.646 c0.64,0.699,1.026,1.591,1.026,2.682c0,3.841-2.337,4.687-4.565,4.935c0.359,0.307,0.679,0.917,0.679,1.852 c0,1.335-0.012,2.415-0.012,2.741c0,0.269,0.18,0.579,0.688,0.481C19.138,20.161,22,16.416,22,12C22,6.477,17.523,2,12,2z"></path></svg><span class="wp-block-social-link-label screen-reader-text">GitHub</span></a></li>

<li class="wp-social-link wp-social-link-youtube  wp-block-social-link"><a rel="noopener nofollow" target="_blank" href="https://www.youtube.com/c/XojoInc" class="wp-block-social-link-anchor"><svg width="24" height="24" viewBox="0 0 24 24" version="1.1" xmlns="http://www.w3.org/2000/svg" aria-hidden="true" focusable="false"><path d="M21.8,8.001c0,0-0.195-1.378-0.795-1.985c-0.76-0.797-1.613-0.801-2.004-0.847c-2.799-0.202-6.997-0.202-6.997-0.202 h-0.009c0,0-4.198,0-6.997,0.202C4.608,5.216,3.756,5.22,2.995,6.016C2.395,6.623,2.2,8.001,2.2,8.001S2,9.62,2,11.238v1.517 c0,1.618,0.2,3.237,0.2,3.237s0.195,1.378,0.795,1.985c0.761,0.797,1.76,0.771,2.205,0.855c1.6,0.153,6.8,0.201,6.8,0.201 s4.203-0.006,7.001-0.209c0.391-0.047,1.243-0.051,2.004-0.847c0.6-0.607,0.795-1.985,0.795-1.985s0.2-1.618,0.2-3.237v-1.517 C22,9.62,21.8,8.001,21.8,8.001z M9.935,14.594l-0.001-5.62l5.404,2.82L9.935,14.594z"></path></svg><span class="wp-block-social-link-label screen-reader-text">YouTube</span></a></li></ul>



<p class="has-text-align-center has-text-color has-link-color wp-elements-a0a2ac26ad214a49dac577734d259176" style="color:#84bd00"><a href="https://xojo.com/download/" target="_blank" rel="noreferrer noopener">Download Xojo</a></p>
]]></content:encoded>
					
		
		<enclosure url="https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_FrozenColumns.mov" length="5935964" type="video/quicktime" />
<enclosure url="https://blog.xojo.com/wp-content/uploads/2026/10/DesktopTable_MouseGesture.mov" length="1111294" type="video/quicktime" />

			</item>
	</channel>
</rss>
