When I paste a cell with the combination ctrl+v, the previous action in the table is canceled.
The bug does not occur every time, but it is very annoying.
If I paste through a formula string, the bug does not trigger.
Related
Essentially just as the title says, I'm making a task list with a "Finished" category that has checkboxes. The way I currently have it set up is that, with the conditional formatting, when you hit the checkbox, the entire row gets grayed out as the task has been completed.
Since it's a big list, however, I don't want to have to go through and do the conditional format rule for each and every row as it descends. I thought I could just do the normal drag down thing but when I try to, it doesn't change to the appropriate cell number in the formula that's in the conditional formatting rule.
I've attached some screenshots of what I'm talking about so, if anyone can help me figure out how to do that, that'd be amazing, thank you!
What the sheet looks like
Conditional Formatting Rule
Set the range to B3:J100 (or whatever range you want the CF to be applied to) and use as a custom formula
=$K3=TRUE
This rule should work for all the rows in the dedicated range.
I'm using Google sheets. I just want the cell to turn green when there is something in it. Pretty basic. It works if I type a value in but not if I paste a value from somewhere else. The ID numbers I'm working with are long so I don't want to retype them because it wastes time and creates room for error.
To preserve conditional formatting when pasting to a cell, you can do one of the following
Choose Paste values only
OR
Double click within the cell and paste your value/number
I have some formulas in a Google Sheet cell. If I restructure the formula, like by adding new lines or spaces, for legibility, it undoes my changes. Is there a way to stop this? It seems to only happen if the cell had the formula before. If I put the formula in a new cell it doesn't do that.
This is on Enterprise G-Suite so I cannot share an example sheet.
Blank cell:
Add a structured formula:
Now if I edit the structure it does not retain the changes. In the example below, I removed a new line after TRUE.
Before hitting enter:
After hitting enter:
Also, if I add the same formula to a new/different cell, regardless of how I structure it, it'll restructure to match the one from the other cell.
Google Sheets remembers forming even upon deletion/insertion in new cell. the only way how to achieve what you ask is to introduce a change that directly affects the output calculation. if the output calculation remains the same after the change in structure/formatting then your only possible option is to use lowercase for formula. in other words, if you change your IF to if or If or iF it will register it as new change and therefore the formating will be not reverted to the previous existing state.
the less preferable but working solution would be to wrap it in some useless formula. for example:
=QUERY(IF(TRUE, "hello", "bye"))
I seem to have a mental block with this one.
I need to save recent changes to a Record. I am doing it OK with buttons for "New" "Edit" "Post" "Next" etc but when a user double-clicks a DBGrid, it is now too late to make changes as the DBGrid selection has moved the database cursor to the selected record.
I can't use AutoUpdate as the data that may have been changed is not something the user would have directly entered, it is a value that is changing all the time.
I'll try to describe it better: While the user is reading a Test-page, a timer is counting down or up. When they click the "Next" or "Prior" buttons I can save the timer setting. But, if they Double-Click the DBGrid I have no way of first changing the current Record before the selection moves to the clicked-Record.
I tried using the
Procedure TForm1.tblTestOnBeforeScroll(...
begin
tblTest.Edit;
tblTest.FieldByName('TimerCt').AsInteger:=ClockCtr;
tblTest.Post;
end;
But, that crashed the database, not surprisingly, but I thought I would give it a try before asking here.
How do I deal with the current record? I do not want to disallow the double-click if possible as it seems nice and intuitive for the user.
I'm afraid that what you do on DBGrid is a wrong in concept action.
Key point is DBGrid is a data aware control. So everything you do on it must based on it's datasource then it's dataset.
There is a DblClick event on TDBgrid. But still you have to check it's dataset to see what record is active.
The code you shown above clearly lead you to an endless loop.
When you doing a scroll, the dbgrid will call OnBeforeScroll event, moving the active record
and call OnAfterScroll. Your OnBeforeScroll code does an data update. Then dbgrid abort its operation cause of data change. Then after data update, it try to scroll again, and the data change happen again. Endless loop happen here.
best regard
Apologies in advance if I'm misunderstanding you, but it seems to me that either the premise of your question is wrong or there is something relevant you haven't told us about what you're doing. Please try the following:
If you don't have one already, please temporarily add a DBNavigator to your form and connect it to the same DataSource as your DBGrid. The point of doing this is so that you can more clearly see what's going on.
Then, in your DBGrid's Options, set dgEditing to True.
Finally, comment out or disable your BeforeScroll handler, save and run your program.
Now, click once in some cell in your DBGrid that contains a value which it's ok to change. Click it a second time so that it selects the value in the cell rather than the cell per se.
Make some change to the cell value, but do nothing else for the time being. You should notice that a) the current record indicator of the DBGrid has changed from a black triangle to an I-Beam graphic, like ][ and b) that the tick and cross buttons of the DBNavigator are now enabled.
Now, without doing anything else on the form, click in another row of the DBGrid. You should find that a) the change to what was the current record in step 5 has been saved and b) the current row indicator reverts to the black triangle and the DBNav's tick and cross buttons are disabled.
(If you don't get the behaviour I've just described, create a minimal new project and try that instead, as some other change you've made in your existing project may be interfering with it).
What I've described in 5 & 6 is the default behaviour of a DBGrid and insofar as I understand your q, that seems to be the behaviour you're trying to achieve. If that's not the behaviour you want, please explain exactly how what you do want differs. It's not clear to me where the user double-clicking on the grid comes into your q, except that that action may move the dataset's cursor (if the dbl-click is on a different row than the current one), but as the default DBGrid behaviour will save changes to the current row before it moves the dataset's cursor, it will do what you seem to want automatically.
Btw, what "AutoUpdate" do you mean? Did you mean TDataSource's AutoEdit property?
I thought OnSetEditText was fired whenever text in a cell changed. After setting a breakpoint and experimenting, I know that's wrong :-) So, first, when is this event fired?
Second, if I would like to have the text inside a grid cell continuously autosized, which event should I be coding to make this happen (note: I am using TMS's string grid derivative which includes a method for autosizing rows; I just have to figure out when to call it)?
The OnSetEditText event is fired every time the user changes the contents of the in-place editor control, assuming, of course, the control is editable (goEditing in Options). This is confirmed by the documentation, the VCL source code, and black-box verification.