bogdanpolak / mailinglistvcl Goto Github PK
View Code? Open in Web Editor NEWMailing List is sample Delphi VCL project (SQL client-server)
License: MIT License
Mailing List is sample Delphi VCL project (SQL client-server)
License: MIT License
Dialog Dialog.ResolveImportConflicts.pas
zależy od ramki Frame.ImportContacts.TFrameImport
. Potrzebuje jedynie dostępu do danych z aktualnego (jednego) wiersza w tabeli mtabEmails
. Dane te są wyświetlane w kontrolkach a w kodzie są ustawiane pola boolean: Conflicts
i Import
.
MailingListVCL/project/Dialog.ResolveImportConflicts.pas
Lines 40 to 48 in 7d1757a
Zminimalizować zależności: Można użyć typu ogólnego TFDMemTable albo połączyć dane z interfejsem użytkownika przez interfejs.
Wyszukać miejsca a DFM-ach, gdzie są na stałe wpisane polecenia SQL w properties-ach TFDQuery.SQL.Text
. Podobnie polecenia SQL które są klejone w kodzie na stringach.
Działanie potrzebne do wydzielenia (w przyszłości) repozytorium SQL-i
DONE (Zadanie zrobione):
Nie widoczne wypełnianie w pętli tabeli pamięciowej mtabEmails (TFDMemTable)
:
MailingListVCL/project/Frame.ImportContacts.pas
Lines 79 to 88 in 7d1757a
Ukryta zależność w funkcji myAddRowToImportTable
od globalnego dataseta dsQueryCurrEmail
:
MailingListVCL/project/Frame.ImportContacts.pas
Lines 84 to 88 in 7d1757a
Gdy jest już otwarta ramka (na liście zakładek) próbie ponownego otwarcie wyskakuje wyjątek.
Procedura:
Po przełaczeniu zakładek (ChromeTabs1) powinny przełączać się widoczne ramki. Jednak wudać tylko ostatnio daną ramkę.
Kroki:
Zamienić na tablicę dynamiczną:
MailingListVCL/project/Dialog.RunSQLScript.pas
Lines 53 to 55 in 7d1757a
Formatowanie daty niezależne od systemu (najlepiej ISO):
MailingListVCL/project/Dialog.RunSQLScript.pas
Lines 57 to 58 in 7d1757a
Zamienić na tablicę dynamiczną:
MailingListVCL/project/Dialog.RunSQLScript.pas
Lines 53 to 55 in 7d1757a
Wydzielić metodę checkDeveloperMode
:
MailingListVCL/project/Form.Main.pas
Lines 175 to 182 in 7d1757a
Logika całej metody jest zbyt skomplikowana i mało czytelna:
MailingListVCL/project/Form.Main.pas
Lines 196 to 198 in 7d1757a
Koncepcja: stworzenie nowej metody eventOnFormFirstShow
która będzie zawierała kilka metod (trzeba podzielić na prostsze elementy) - do dyskusji jakie ..
Zmienić nazwę timera na tmrFirstShow
i logikę eventu tak aby wywoływany był tylko raz i potem blokowany: tmrFirstShow.Enabled := False
(większe bezpieczeństwo)
Wyrzucenie demonstracyjnych danych kontaktów z Dialog.RunSQLScript.pas gdzieś na zewnątrz:
MailingListVCL/project/Dialog.RunSQLScript.pas
Lines 43 to 46 in 7d1757a
(gdzie? - do dyskusji)
DONE (Zadanie zrobione):
Nie widoczne wypełnianie w pętli tabeli pamięciowej mtabEmails (TFDMemTable)
:
MailingListVCL/project/Frame.ImportContacts.pas
Lines 79 to 88 in 7d1757a
Ukryta zależność w funkcji myAddRowToImportTable
od globalnego dataseta dsQueryCurrEmail
:
MailingListVCL/project/Frame.ImportContacts.pas
Lines 84 to 88 in 7d1757a
Błąd #5 naprawiony. Jednak była to szybka poprawka. Cała funkcja wymaga refaktoringu.
MailingListVCL/project/Frame.ImportContacts.pas
Lines 103 to 105 in 7d1757a
Refaktoring kodu:
MailingListVCL/project/Frame.ImportContacts.pas
Lines 115 to 122 in 7d1757a
Przechwytywany jest ogólny wyjątek (nie jest bezpieczne) i wygaszany:
MailingListVCL/project/Frame.ImportContacts.pas
Lines 150 to 156 in 7d1757a
Ramka: Importu Kontakty
Jeśli lista do importu nie została wcześniej załadowana to po kliknięciu na button [Zaimportuj zaznaczone] wyskakuje wyjątek
Początkowy import kontaktów trwa bardzo długo przy dużych listach. Proszę sprawdzić czy możliwa jest poprawa wydajności?
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.