|
Как правильно обработать .protect в datawindow expression
|
|||
---|---|---|---|
#18+
Формалист Филипп потребовал переспросить в новой ветке... Собственно вопрос: Как правильно в dw expression сослаться на текущее значение проперти .protect? Например, переустанавливаем цвет или цвет фона в зависимости от текущего значения выражения .protect для конкретного поля конкретной строки... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2004, 15:04 |
|
Как правильно обработать .protect в datawindow expression
|
|||
---|---|---|---|
#18+
Вообще для DW: либо this.Describe("<Columnname>.Protect") или this.Object.<Columnname>.Protect НО ИМХО, так как свойво protect установить для строку нельзя, то без дополнительного поля, значение которого и будет опряделять изменение цвета, не обойтись. Если возможно как нить по другому, то я с радостью приму к сведению. Но вот: These properties are set per column and can only be changed on a per row base by declaring an expression for the properties. For instance, if you want to change the color based on something unrelated to the data in the datawindow you will need to add a hidden computed column/field, and set the background color of the desired column to be based on the value in the computed column/field. Then just set the value in the computed column/field for that row, to set the color of the desired column for that row. I'm afraid there's no way to automate this but please find below a do-it-yourself w/a which is our solution: 1* Create a new tabular dw which SQL select is: SELECT emp_fname, emp_lname FROM employee 2* Add two computed fields in the footer band called CF_ROW and CF_COL Expression for CF_ROW is 0, expression for CF_COL is "" 3* Set the footer height to 0 to hide the computed fields 4* Select emp_fname in the detail band 5* Enter an expression for the desired property (e.g., Font Background Color) 6* Enter: If (GetRow()= cf_row and string(cf_col) = "emp_fname", RGB(192,192,192), RGB(255, 255, 255)) //You have to do this for all columns for any property 7* Select emp_lname in the detail band 8* Enter an expression for the same property 9* Enter: If (GetRow()= cf_row and string(cf_col) = "emp_lname", RGB(192,192,192), RGB(255, 255, 255)) 10* Place the dw inside the dw control on a sheet 11* Add the window a singlelineedit control called SLE_1, an editmask EM_1 and a command button CB_1 12* Regarding the editmask, set its mask to ## and check the spin property 13* Add the following code to CB_1 clicked event: dw_1.object.cf_row.expression = em_1.text dw_1.object.cf_col.expression = "'"+sle_1.text+"'" 14* Run the application 15* Type in SLE_1 a value for the column: either emp_fname, or emp_lname 16* Use the EM_1 spin to increment the row value 17* Click CB_1 => The new background color will only concern the designed column. This shows you that you can modify a property w/o altering the whole column or row so now you can remove controls from the sheet and store their values in variables. No other way. ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2004, 16:59 |
|
Как правильно обработать .protect в datawindow expression
|
|||
---|---|---|---|
#18+
Это официальный ответ от Sybase ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2004, 17:12 |
|
Как правильно обработать .protect в datawindow expression
|
|||
---|---|---|---|
#18+
2Сотников AKA Sybase Использовать компьютед филдс для установки цвета, это понятно... Хотелось бы только уточнить, что получение цвета с помощью RGB, не слишком, скажем, sophisticated approarch... Правильнее, ИМХО, ориентироваться на виндузовые константы явно указывая из значения, или получая их через что-то типа:describe('ef_sample_wnd_bkgrnd.color'). Describe("<Columnname>.Protect"), как вы изволили выразиться... ...Замечательно. Он возвращает, дефолтное значение и експрешн скрепленные символом табуляции. Если мы не закладываемся на то, что expression это '0' или '1', штука не слишком полезная. Можно-ли получить фактическое значение для известного "поля" и известной строки? Describe('evaluate... здесь сработает? Или выцеплять expression и его эвалюировать? Да, чуть не забыл - спасибо за ответ! ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2004, 17:55 |
|
Как правильно обработать .protect в datawindow expression
|
|||
---|---|---|---|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15.
... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2004, 18:32 |
|
Как правильно обработать .protect в datawindow expression
|
|||
---|---|---|---|
#18+
Спасибо, Филипп! Этого я и опасался - выцеплять и эвалюировать. Да ещё про одинарные кавычки не забывать. Внутри expression это будет весьма громоздко... Ну да ладно... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2004, 19:11 |
|
Как правильно обработать .protect в datawindow expression
|
|||
---|---|---|---|
#18+
А чего опасаться. Вам же уже дали (не я) правильный ответ на не совсем правильно поставленный вопрос. Вы же собрались цвет\фон менять в зависимости от .protectа. Но .protect может быть conditional от ряда к ряду только основываясь на значении какой то колонки в datawindow в данном ряду. Значит expressionы для цвет\фон должны смотреть туда же, а НЕ на .protect expression... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2004, 19:18 |
|
Как правильно обработать .protect в datawindow expression
|
|||
---|---|---|---|
#18+
ФилиппЗначит expressionы для цвет\фон должны смотреть туда же, а НЕ на .protect expression...Так и происходит, 'cource. Просто, хотелось укоротить цепочку. А то всегда остается вероятность, при изменении условия на протект не поменяются условия на цвет и наоборот... Конечно, это можно обойти - пусть оба смотрят на значение вычисляемого поля, но тогда - сколько условий на .protect'ы столько (dedicated) computed fields... Не по Оккаму, как-то... ... |
|||
:
Нравится:
Не нравится:
|
|||
10.03.2004, 19:34 |
|
|
start [/forum/topic.php?fid=15&fpage=108&tid=1339253]: |
0ms |
get settings: |
10ms |
get forum list: |
19ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
75ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
59ms |
get tp. blocked users: |
1ms |
others: | 283ms |
total: | 466ms |
0 / 0 |