Form Events¶
Form üzerindeki etkileşim olaylarına abone olur. Buton tıklaması, form yüklenme, değer değişikliği gibi UI tetiklemelerini yakalar.
Property Tablosu¶
| Alan | Tip | Varsayılan | Açıklama |
|---|---|---|---|
name |
string | — | Canvas üzerinde gösterilecek ad |
method |
string | post |
HTTP method (otomatik) |
formname |
string | CustomForm |
İzlenecek formun adı (combobox'tan seçilir — akıştaki Custom Form node'larını listeler) |
control |
string | (boş) | İzlenecek kontrolün adı (örn. btnTamam) |
eventname |
string | Click |
Kontrol olayı türü (combobox ile seçilir) |
formainform |
boolean | false |
Ana form (AppForm) üzerindeki kontrol mü? |
eventtime |
string | After |
Olay zamanı: After veya Before (formainform=true iken görünür) |
Özel yapı
Form Events, diğer event node'larından farklıdır: form adı + kontrol adı + olay türü kombinasyonuna abone olur. formname alanı, akıştaki mevcut Custom Form node'larını otomatik listeleyen bir combobox'tır.
Olay Türleri (eventname)¶
eventname alanı combobox ile seçilir. Mevcut seçenekler:
| Olay Türü | Açıklama |
|---|---|
Click |
Kontrol tıklandığında |
Changed |
Kontrol değeri değiştiğinde |
Load |
Kontrol yüklendiğinde |
Tick |
Zamanlayıcı olayı |
KeyEnter |
Enter tuşuna basıldığında |
SelectionChanged |
Seçim değiştiğinde |
Form Yüklenme (Load) Olayı¶
Formun açıldığı anda otomatik tetiklemek için Load eventi kullanılır. Kontrol adı olarak _ (alt çizgi) girilir — bu, form genelinde load olayını temsil eder.
| Alan | Değer |
|---|---|
| Form Name | Hedef Custom Form node'unun adı |
| Control | _ |
| Event Name | Load |
Neden _?
_ kontrolüne ait Load event'i, formun kendisinin yüklenme anını temsil eder. Belirli bir kontrole ait Load değil, formun açılış tetiklemesidir.
Senaryo 1 — Açılışta Kontrol Değerlerini Göster¶
Form açıldığında bazı label veya textbox değerlerini doldurmak için Control Properties kullanılır.
flowchart LR
A[Custom Form\nOrderForm] --> B[Responser]
C["Form Events\nOrderForm / _ / Load"] --> D["Control Properties\nlblTitle.Text = msg.payload.OrderNo"]
D --> E[Responser]
style A fill:#ccffcc,color:#000
style C fill:#ccffcc,color:#000
style D fill:#ccffcc,color:#000
style E fill:#ccffcc,color:#000
Akış 1 — Formu aç:
| Node | Tip | Ayar |
|---|---|---|
| — | Business Events | İlgili event |
| — | Custom Form | name=OrderForm |
| — | Responser | — |
Akış 2 — Load olayında değerleri ata:
| Node | Tip | Ayar |
|---|---|---|
| — | Form Events | formname=OrderForm, control=_, eventname=Load |
| — | Control Properties | lblTitle.Text → msg. payload.OrderNo |
| — | Responser | — |
Senaryo 2 — Açılışta Grid'e Veri Yükle¶
Form açıldığında grid'e SQL sorgusu ile veri doldurmak için ISqlDataContext + Form Bind Controls kombinasyonu kullanılır.
flowchart LR
A[Custom Form\nStockForm] --> B[Responser]
C["Form Events\nStockForm / _ / Load"] --> D["function\nmsg.query oluştur"]
D --> E["Method Invoker\nISqlDataContext.GetDataTable\nname=LoadStock"]
E --> F[Responser]
G["Method Returns\nmethodname=LoadStock"] --> H["Form Bind Controls\ndbGrid ← payload"]
H --> I[Responser]
style A fill:#ccffcc,color:#000
style C fill:#ccffcc,color:#000
style D fill:#ccffcc,color:#000
style E fill:#ccffcc,color:#000
style G fill:#ccffcc,color:#000
style H fill:#ccffcc,color:#000
style I fill:#ccffcc,color:#000
Akış 1 — Formu aç:
| Node | Tip | Ayar |
|---|---|---|
| — | Business Events | İlgili event |
| — | Custom Form | name=StockForm |
| — | Responser | — |
Akış 2 — Load olayında SQL çek:
| Node | Tip | Ayar |
|---|---|---|
| — | Form Events | formname=StockForm, control=_, eventname=Load |
| SQL hazırla | function | msg.query = \SELECT TOP 100 * FROM STOCK`; return msg;` |
| LoadStock | Method Invoker | service=ISqlDataContext, method=GetDataTable, params: query→msg.query |
| — | Responser | — |
Akış 3 — Sonucu grid'e bağla:
| Node | Tip | Ayar |
|---|---|---|
| — | Method Returns | methodname=LoadStock |
| — | Form Bind Controls | formname=StockForm, data=msg.payload, control=dbGrid |
| — | Responser | — |
Örnek Kullanım — Buton Tıklaması¶
flowchart LR
A[Form Events<br/>btnTamam Click] --> B[Method Invoker<br/>SaveOrder]
B --> C[Responser]
style A fill:#ccffcc,color:#000
style B fill:#ccffcc,color:#000
style C fill:#ccffcc,color:#000
Giriş Mesajı¶
Button click örnek:
{
"_msgid": "abc123",
"payload": {
"formName": "OrderForm",
"controlName": "btnSubmit",
"eventType": "click",
"formData": {
"orderNo": "ORD-001",
"qty": 100,
"customer": "ACME"
}
}
}
İpuçları¶
Form alanlarını okumak
Button click event'inde payload.formData içerisinde tüm form alanlarının anlık değerleri gelir. Bu sayede her alan için ayrı event tanımlamak gerekmez.
Validate event
Form kaydedilmeden önce bir validate event tanımlarsanız, sunucu tarafında validasyon yapıp Handle Setter ile akışı kesebilirsiniz.