2023年6月27日 星期二

SC 裡面所有的圖片都設為 Responsive 響應式,這個搞了好久,解決方案這麼簡單!

先參考這一篇:

https://alfredwebdesign.blogspot.com/2022/06/scriptcase-sccss.html

內容複製如下:

可以在 Application 的 Events 裡面的 onScriptInit 裡面添加 CSS 的定義,就可以修改掉 原本 SC的CSS設定,例如:希望將 GRID 的表格底部的訊息隱藏起來,不要出現,可以使用 網頁檢查 的方式,查到該信息的 ID 為:sc_grid_sumario

那段 html 為:

<tr id="sc_grid_sumario"> .....</tr>

所以,就可以在 onScriptInit 這個 Event 裡面,這樣改:

?>
<style>
#sc_grid_sumario {
  display: none;
}
</style>
<?php


註:

onScriptInit 會加在 <HTML><HEAD>............[加在這裡]</HEAD>  

onApplicationInit 會加在 [加在這裡]<HTML<HEAD>............</HEAD>


找到將 img 設為 responsive 的 CSS 為:

img {
    max-width: 100%;
    height: auto;
}
所以,就在 onScriptInit Event 中,加上:
?>
<style>
img {
    max-width: 100%;
    height: auto;
}
</style>
<?php
就這樣,所有的 img 就都可以 responsive 了!
這麼簡單!喔~~~搞了好久!
原本的想法還在想要用 Bootstrap 外部程式庫的方式引入,再來想如何將 class = "img-fluid" 加到該欄位!

2023年6月24日 星期六

SC 的 Search

SC 已經做好幾種不同的 Search 模組功能,可以直接套用,功能強大。

如果只是在 Grid 列表中提供搜尋,就用 

1. Grid Modules 

  •     只要一個 Grid 就可以了,其他的 Search、Detail、Summary、Chart 都可以關閉掉。

2. Grid -> Search -> Quick Search -> Setting->QuickSearch layout 選擇 Simplified 以及下面的設定,這樣就可以了



一、Search Application

範例: samples/Search_Application/search01

Search01 是一個 Search Application

裡面只有一個輸入欄位: companyname

欄位右邊有一個 放大鏡連結,可以 呼叫 search01_01

是一個 Grid Application

這個連結屬於: Capture Link

第二個連結,就是 Edit Link,連結到一個 Form search01_02

帶出選擇的 companyid 的那筆 Form 來編輯。



二、GRID 裡面附的 SERACH

1. QUICK SEARCH 快速搜尋。允許在不同的欄位間搜尋資料。

• 在 工具按鈕列 ToolBar 上

• 跨欄位資料間搜尋

• 文字欄位中輸入搜尋資料

• 可以有以下幾種不同的選項形式:

○ 簡單型快速搜尋 / 擴充型快速搜尋

○ 搜尋結果是否粗體?

○ 是否保留 與 進階搜尋結果合併?

○ 放大鏡圖示 放在 格裡裡面?還是 外面?

○ 在簡單型快速搜尋時,顯示 下拉式<欄位選單>

○ 個別欄位的選項設定

2. Advanced Search 進階搜尋 :

• 搜尋更多的進階設定


3. Dynamic Search 動態搜尋


4. Refined Search 出現在螢幕左邊的 像591租屋網搜尋的Search


SC 表單中設計一個 [同上] 的 CheckBox,點擊打勾後,自動代入同上欄位的值

方法一:

例如:有兩個欄位

一個參加人姓名,一個繳款人姓名。輸入完參加人資料以後,有一個 CheckBox 打勾勾,同參加人,如果打勾的話,繳款人就不用重複輸入了,直接帶入參加人資料為繳款人資料。

這樣就額外加一個自訂欄位: same_check,欄位型態為CheckBox

然後在 Ajax Events 裡面,建立一個新的 Events:same_check_onClick,參數為:same_check

same_check 設定有一個值為"S"

在 Ajax Events same_check_onClick:

if ({same_check} == 'S') {

{payer_mem_ext_id} = {attender_mem_ext_id};

} else {

{payer_mem_ext_id} = "";

}

這一個方法,出來的效果比較理想。滑鼠一點擊CheckBox,如果是On,就會帶入值,如果Off,就會清空,這樣的效果較好。


方法二:

另一個以前設計的方法,是一個 Button,用 JavaScript 的方式完成。

Field:

增加一個 自訂 Field {same_addr_btn1}

JavaScript function sameaddress1()

$("select[name$='members_com_addr_country_id']" ).val($("select[name$='members_legal_addr_country_id']").val());

$("input[name$='members_com_addr_state']" ).val($("input[name$='members_legal_addr_state']").val());

$("input[name$='members_com_addr_city']" ).val($("input[name$='members_legal_addr_city']").val());

$("input[name$='members_com_addr_postcode']" ).val($("input[name$='members_legal_addr_postcode']").val());

$("input[name$='members_com_addr_street1']" ).val($("input[name$='members_legal_addr_street1']").val());

$("input[name$='members_com_addr_street2']" ).val($("input[name$='members_legal_addr_street2']").val());


Event OnLoad

{same_addr_btn1}="<button type='button' onclick='sameaddress1()'>Same Address</button>";

2023年6月19日 星期一

如何在 ScriptCase 中 Debug?

ScriptCase 的 Application -> Setting ->Notification Settings 裡面有 Debug Mode、還有一些是否顯示錯誤的選項可以設定,在這裡將他們打開,執行時就會出現錯誤訊息。

尤其是 SQL 的錯誤訊息,這樣才能除錯!


另外,我自己寫了一個 SQL procedure: system_log("log text"),可以將信息寫到 system_log 這個 table裡面。

system_log table 是要另外獨立建立的。

這個可以用來記錄自己要記錄的流水信息 LOG。

2023年6月18日 星期日

MySQL utf8 / utf8mb4?

MySQL資料庫,現在新的資料庫,最好都直接用 utf8mb4 了!

collate 用 utf8mb4_unicode_ci

當建立一個新的專案的時候,要先留意把這個資料庫的字元設定好,全部一致,這樣可以減少很多後面的一大堆麻煩!


2023年6月16日 星期五

ScriptCase 中,關於影像圖片檔案的處理

ScriptCase 的表單欄位 Form Fields 型態裡面,有兩種影像欄位: Image(Database)、Image(File Name)。

存在 Database 的,就是存在 MySQL的 Image (BLOB) 欄位,這種欄位型態,我沒有用過,我認為那是將 Image 的內容直接存在資料庫的欄位中,不論是存進去或讀出來都有其獨特的方法,沒有辦法直接用網頁或瀏覽器職讀取內容,這很麻煩,不好用,所以我不用。我都使用 FileName 檔案的型態,儲存圖檔名稱在某個特定的子目錄底下,這樣使用檔案總管之類的工具就可以很輕易的看到該圖檔內容。

所以,在 SC裡面的 Image (FileName),就會有檔案名稱,以及子目錄等設定必須做。

在資料庫裏面,該欄位則直接是存 檔案名稱,另外子目錄則是可以設定。

最基本的圖檔目錄設定是在:Application Setting 中設定。

然後,個別紀錄的檔案則再在 Subdirectory for local storage 這裡設定。

這個設定,可以用 global/local 變數、或欄位數值等來做為子目錄路徑(path)。


如何判斷現在FORM是在 insert mode? 還是 update mode?

只要用  if (empty({primary_key})) 就可以知道是否為新增模式了。 如果 {promary_key} 是空白的,那麼就是在新增模式;反之,就是更新模式。 以上。